此存储库包含一个示例后端代码,演示如何组合 Virgil 和 Twilio JWT 生成,这些代码用于通过 Virgil 和 Twilio 服务进行身份验证。
不要在生产中使用此身份验证。必须允许经过身份验证的用户向 /virgil-jwt 和 /twilio-jwt 端点发出请求。使用您的应用程序授权策略。
从 GitHub 克隆存储库。
$ git clone https://github.com/VirgilSecurity/twilio-sample-backend-nodejs.git
如果您还没有帐户,请使用您的电子邮件注册一个。
.env
。.env
。 要生成 Virgil JWT,需要以下值:
变量名 | 描述 |
---|---|
应用程序ID | 您的 Virgil 应用程序的 ID。 |
APP_KEY | 用于签署 JWT 的应用程序的私钥。 |
APP_KEY_ID | 您的应用程序密钥的 ID。一个唯一的字符串值,用于标识您在 Virgil Cloud 中的帐户。 |
.env.example
并将其重命名为.env
。APP_ID
复制到.env
文件中;.env
文件中的APP_KEY
行;.env
文件中的APP_KEY_ID
行;要生成 Twilio JWT,需要以下值:
变量名 | 描述 |
---|---|
TWILIO_ACCOUNT_SID | 您的主要 Twilio 帐户标识符 - 在此处的控制台中找到它。 |
TWILIO_API_KEY_SID | Twilio Api 密钥的 SID。用于 Twilio 服务上的身份验证。使用 TWILIO_API_SECRET 生成 |
TWILIO_API_秘密 | Twilio API 密钥秘密:在此处生成一个 |
TWILIO_SERVICE_SID | 一个服务实例,其中存储了应用程序的所有数据并确定了范围。在此处的控制台中生成一个。 |
将此参数添加到您的.env
文件中。
$ npm install
$ npm run start
现在,使用客户端代码发出请求,从在 http://localhost:3000 上运行的示例后端获取 JWT。
除了后端之外,我们还提供了与 Virgil API 交互的简单客户端聊天演示,如果您在浏览器中导航到 http://localhost:3000,则可以看到该演示。示例聊天代码位于public
目录中。
该端点是用户身份验证的示例。它获取用户identity
并使用唯一令牌进行响应。
POST https://localhost:3000/authenticate HTTP/1.1
Content-type: application/json;
{
"identity" : " string "
}
Response:
{
"authToken" : " string "
}
该端点检查请求是否通过授权标头进行身份验证。它获取用户的authToken
,查找相关的用户身份,并在有效负载中生成一个包含此identity
的virgilToken
(JSON Web 令牌)。使用此令牌对 Virgil Cloud 进行授权 API 调用。
GET https://localhost:3000/virgil-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"virgilToken" : " string "
}
与 Virgil 令牌端点相同,Twilio 端点应受到保护并使用twilioToken
进行响应。
GET https://localhost:3000/twilio-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"twilioToken" : " string "
}
要生成 Virgil JWT,您需要使用 Virgil SDK 中的JwtGenerator
类。
const virgilCrypto = new VirgilCrypto ( ) ;
const generator = new JwtGenerator ( {
appId : process . env . APP_ID ,
apiKeyId : process . env . API_KEY_ID ,
apiKey : virgilCrypto . importPrivateKey ( process . env . API_PRIVATE_KEY ) ,
accessTokenSigner : new VirgilAccessTokenSigner ( virgilCrypto )
} ) ;
然后,您需要提供一个 HTTP 端点,该端点将以 JSON 形式返回带有用户身份的 JWT。
有关更多详细信息,请查看 virgilToken.js 文件。
该库是根据 3 条款 BSD 许可证发布的。
我们的开发人员支持团队随时为您提供帮助。在我们的帮助中心了解更多信息。
您可以在 Twitter 上找到我们或向我们发送电子邮件 [email protected]。
此外,还可从我们的 Slack 支持团队获得额外帮助。