Este repositório contém um exemplo de código de back-end que demonstra como combinar a geração Virgil e Twilio JWT, que são usados para autenticação com os serviços Virgil e Twilio.
Não use esta autenticação na produção. As solicitações para endpoints /virgil-jwt e /twilio-jwt devem ser permitidas para usuários autenticados. Use sua estratégia de autorização de aplicativo.
Clone o repositório do GitHub.
$ git clone https://github.com/VirgilSecurity/twilio-sample-backend-nodejs.git
Se você ainda não tem uma conta, cadastre-se usando seu e-mail.
.env
na seção do arquivo .env ..env
. Para gerar um Virgil JWT são necessários os seguintes valores:
Nome da variável | Descrição |
---|---|
APP_ID | ID do seu aplicativo Virgil. |
APP_KEY | Chave privada do seu App que é usada para assinar os JWTs. |
APP_KEY_ID | ID da sua chave de aplicativo. Um valor de string exclusivo que identifica sua conta no Virgil Cloud. |
.env.example
para .env
.APP_ID
para o arquivo .env
;APP_KEY
no arquivo .env
;APP_KEY_ID
no arquivo .env
;Para gerar um JWT do Twilio, os seguintes valores são necessários:
Nome da variável | Descrição |
---|---|
TWILIO_ACCOUNT_SID | Seu identificador de conta principal da Twilio – encontre-o no console aqui. |
TWILIO_API_KEY_SID | SID da chave de API do Twilio. Usado para autenticação em serviços Twilio. Gerado com TWILIO_API_SECRET |
TWILIO_API_SECRET | Segredo da chave da API Twilio: gere um aqui |
TWILIO_SERVICE_SID | Uma instância de serviço onde todos os dados de nosso aplicativo são armazenados e com escopo definido. Gere um no console aqui. |
Adicione esses parâmetros ao seu arquivo .env
.
$ npm install
$ npm run start
Agora, use seu código de cliente para fazer uma solicitação para obter um JWT do back-end de amostra que está funcionando em http://localhost:3000.
Junto com o backend, fornecemos uma demonstração de um chat de cliente simples interagindo com a API Virgil, que você pode ver se navegar até http://localhost:3000 em seu navegador. O exemplo de código de chat está localizado no diretório public
.
Este endpoint é um exemplo de autenticação de usuários. Leva identity
do usuário e responde com um token exclusivo.
POST https://localhost:3000/authenticate HTTP/1.1
Content-type: application/json;
{
"identity" : " string "
}
Response:
{
"authToken" : " string "
}
Este endpoint verifica se uma solicitação é autenticada por um cabeçalho de autorização. Ele pega authToken
do usuário, encontra a identidade do usuário relacionada e gera um virgilToken
(que é JSON Web Token) com essa identity
em uma carga útil. Use este token para fazer chamadas de API autorizadas para Virgil Cloud.
GET https://localhost:3000/virgil-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"virgilToken" : " string "
}
Igual ao endpoint do token Virgil O endpoint Twilio deve ser protegido e responde com twilioToken
.
GET https://localhost:3000/twilio-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"twilioToken" : " string "
}
Para gerar um Virgil JWT, você precisa usar a classe JwtGenerator
do Virgil SDK.
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 )
} ) ;
Então você precisa fornecer um endpoint HTTP que retornará o JWT com a identidade do usuário como JSON.
Para mais detalhes, dê uma olhada no arquivo virgilToken.js.
Esta biblioteca é lançada sob a licença BSD de 3 cláusulas.
Nossa equipe de suporte ao desenvolvedor está aqui para ajudá-lo. Saiba mais informações em nossa Central de Ajuda.
Você pode nos encontrar no Twitter ou enviar um e-mail para [email protected].
Além disso, obtenha ajuda extra de nossa equipe de suporte no Slack.