Dieses Repository enthält einen Beispiel-Backend-Code, der zeigt, wie die Virgil- und Twilio-JWT-Generierung kombiniert wird, die für die Authentifizierung mit den Virgil- und Twilio-Diensten verwendet werden.
Verwenden Sie diese Authentifizierung nicht in der Produktion. Anfragen an einen /virgil-jwt- und /twilio-jwt-Endpunkt müssen für authentifizierte Benutzer zulässig sein. Verwenden Sie Ihre Anwendungsautorisierungsstrategie.
Klonen Sie das Repository von GitHub.
$ git clone https://github.com/VirgilSecurity/twilio-sample-backend-nodejs.git
Wenn Sie noch kein Konto haben, registrieren Sie sich bitte mit Ihrer E-Mail-Adresse.
.env
im Abschnitt .env-Datei ..env
um. Um ein Virgil-JWT zu generieren, sind die folgenden Werte erforderlich:
Variablenname | Beschreibung |
---|---|
APP_ID | ID Ihrer Virgil-Anwendung. |
APP_KEY | Privater Schlüssel Ihrer App, der zum Signieren der JWTs verwendet wird. |
APP_KEY_ID | ID Ihres App-Schlüssels. Ein eindeutiger Zeichenfolgenwert, der Ihr Konto in der Virgil Cloud identifiziert. |
.env.example
und benennen Sie es in .env
um.APP_ID
in die .env
Datei.APP_KEY
in der .env
Datei.APP_KEY_ID
in der .env
Datei.Um ein Twilio-JWT zu generieren, sind die folgenden Werte erforderlich:
Variablenname | Beschreibung |
---|---|
TWILIO_ACCOUNT_SID | Ihre primäre Twilio-Konto-ID – finden Sie diese hier in der Konsole. |
TWILIO_API_KEY_SID | SID des Twilio-API-Schlüssels. Wird zur Authentifizierung bei Twilio-Diensten verwendet. Generiert mit TWILIO_API_SECRET |
TWILIO_API_SECRET | Twilio-API-Schlüsselgeheimnis: Generieren Sie hier eines |
TWILIO_SERVICE_SID | Eine Dienstinstanz, in der alle Daten für unsere Anwendung gespeichert und festgelegt werden. Generieren Sie hier eine in der Konsole. |
Fügen Sie diese Parameter Ihrer .env
Datei hinzu.
$ npm install
$ npm run start
Verwenden Sie nun Ihren Clientcode, um eine Anfrage zum Abrufen eines JWT vom Beispiel-Backend zu stellen, das auf http://localhost:3000 arbeitet.
Zusammen mit dem Backend stellen wir eine Demonstration eines einfachen Client-Chats zur Verfügung, der mit der Virgil-API interagiert. Sie können diese sehen, wenn Sie in Ihrem Browser zu http://localhost:3000 navigieren. Der Beispiel-Chatcode befindet sich im public
Verzeichnis.
Dieser Endpunkt ist ein Beispiel für die Benutzerauthentifizierung. Es nimmt die identity
entgegen und antwortet mit einem eindeutigen Token.
POST https://localhost:3000/authenticate HTTP/1.1
Content-type: application/json;
{
"identity" : " string "
}
Response:
{
"authToken" : " string "
}
Dieser Endpunkt prüft, ob eine Anfrage durch einen Autorisierungsheader authentifiziert wird. Es nimmt authToken
des Benutzers, findet die zugehörige Benutzeridentität und generiert ein virgilToken
(das ist ein JSON-Web-Token) mit dieser identity
in einer Nutzlast. Verwenden Sie dieses Token, um autorisierte API-Aufrufe an Virgil Cloud durchzuführen.
GET https://localhost:3000/virgil-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"virgilToken" : " string "
}
Wie der Virgil-Token-Endpunkt sollte der Twilio-Endpunkt geschützt sein und mit twilioToken
antworten.
GET https://localhost:3000/twilio-jwt HTTP/1.1
Content-type: application/json;
Authorization: Bearer <authToken>
Response:
{
"twilioToken" : " string "
}
Um ein Virgil-JWT zu generieren, müssen Sie die JwtGenerator
Klasse aus dem Virgil SDK verwenden.
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 )
} ) ;
Dann müssen Sie einen HTTP-Endpunkt bereitstellen, der das JWT mit der Identität des Benutzers als JSON zurückgibt.
Weitere Informationen finden Sie in der Datei virgilToken.js.
Diese Bibliothek wird unter der 3-Klausel-BSD-Lizenz veröffentlicht.
Unser Entwickler-Support-Team ist für Sie da. Weitere Informationen finden Sie in unserem Hilfecenter.
Sie finden uns auf Twitter oder senden Sie uns eine E-Mail an [email protected].
Erhalten Sie außerdem zusätzliche Hilfe von unserem Support-Team auf Slack.