Этот репозиторий содержит пример внутреннего кода, который демонстрирует, как объединить генерацию JWT Virgil и Twilio, которая используется для аутентификации со службами Virgil и Twilio.
Не используйте эту аутентификацию в производстве. Запросы к конечным точкам /virgil-jwt и /twilio-jwt должны быть разрешены для аутентифицированных пользователей. Используйте свою стратегию авторизации приложений.
Клонируйте репозиторий с GitHub.
$ git clone https://github.com/VirgilSecurity/twilio-sample-backend-nodejs.git
Если у вас еще нет учетной записи, зарегистрируйте ее, используя свой адрес электронной почты.
.env
в разделе файла .env ..env
. Для создания Virgil JWT необходимы следующие значения:
Имя переменной | Описание |
---|---|
Идентификатор_приложения | Идентификатор вашего приложения Virgil. |
ПРИЛОЖЕНИЕ_КЛЮЧ | Закрытый ключ вашего приложения, который используется для подписи JWT. |
APP_KEY_ID | Идентификатор вашего ключа приложения. Уникальное строковое значение, идентифицирующее вашу учетную запись в Virgil Cloud. |
.env.example
в .env
.APP_ID
в файл .env
;APP_KEY
в файле .env
;APP_KEY_ID
файла .env
;Для создания Twilio JWT необходимы следующие значения:
Имя переменной | Описание |
---|---|
TWILIO_ACCOUNT_SID | Ваш основной идентификатор учетной записи Twilio — найдите его в консоли здесь. |
TWILIO_API_KEY_SID | SID ключа API Twilio. Используется для аутентификации в службах Twilio. Создано с помощью TWILIO_API_SECRET |
TWILIO_API_SECRET | Секретный ключ API Twilio: создайте его здесь |
TWILIO_SERVICE_SID | Экземпляр службы, в котором хранятся и ограничиваются все данные нашего приложения. Создайте его в консоли здесь. |
Добавьте эти параметры в свой файл .env
.
$ npm install
$ npm run start
Теперь используйте свой клиентский код, чтобы сделать запрос на получение JWT из примера серверной части, работающей по адресу http://localhost:3000.
Наряду с серверной частью мы предоставляем демонстрацию простого клиентского чата, взаимодействующего с API Virgil, который вы можете увидеть, перейдя по адресу http://localhost:3000 в своем браузере. Пример кода чата находится в public
каталоге.
Эта конечная точка является примером аутентификации пользователей. Он принимает identity
пользователя и отвечает уникальным токеном.
POST https://localhost:3000/authenticate HTTP/1.1
Content-type: application/json;
{
"identity" : " string "
}
Response:
{
"authToken" : " string "
}
Эта конечная точка проверяет, аутентифицирован ли запрос по заголовку авторизации. Он принимает authToken
пользователя, находит связанный идентификатор пользователя и генерирует virgilToken
(который является веб-токеном JSON) с этим identity
в полезной нагрузке. Используйте этот токен для авторизованных вызовов API к Virgil Cloud.
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 "
}
Чтобы создать JWT Virgil, вам необходимо использовать класс JwtGenerator
из 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 )
} ) ;
Затем вам необходимо предоставить конечную точку HTTP, которая будет возвращать JWT с идентификатором пользователя в формате JSON.
Для получения более подробной информации посмотрите файл virgilToken.js.
Эта библиотека выпущена под лицензией BSD из 3 пунктов.
Наша команда поддержки разработчиков всегда готова помочь вам. Дополнительную информацию можно найти в нашем Справочном центре.
Вы можете найти нас в Твиттере или отправить нам электронное письмо на адрес [email protected].
Кроме того, получите дополнительную помощь от нашей службы поддержки Slack.