Модуль JWT Ballerina [1] обеспечивает следующие функциональные возможности.
Выпуск JWT
Вы можете выпустить / сгенерировать JWT, предоставив jwt:JwtIssuerConfig
. Вы можете настроить имя пользователя, эмитента, аудиторию, срок действия, алгоритм подписи, пользовательские утверждения и конфигурацию для подписи (конфигурация хранилища ключей). Пожалуйста, обратитесь к документации API jwt:JwtIssuerConfig
[2] . Пример кода можно найти по адресу [3] .
Проверка JWT
Вы можете проверить JWT, указав jwt:JwtValidatorConfig
. Вы можете настроить ожидаемого эмитента, ожидаемую аудиторию, перекос часов, конфигурации кэша и конфигурации для проверки подписи (конфигурация доверенного хранилища). Пожалуйста, обратитесь к документации API jwt: JwtValidatorConfig
[4] . Пример кода можно найти по адресу [3] .
Защита службы с помощью JWT
. Вы можете использовать JWT для защиты и службы HTTP. Заголовок Authorization
входящего HTTP-запроса будет проверен и проверен в соответствии с предоставленными конфигурациями. Пожалуйста, обратитесь к документации API jwt:InboundJwtAuthProvider
[5] . Пример кода можно найти по адресу [6] .
Вызов службы с помощью JWT
Вы можете использовать JWT для вызова на внешний сервер который аутентифицирован с JWT. Исходящий HTTP-запрос подготовлен с заголовком Authorization
в соответствии с предоставленными конфигурациями. Пожалуйста, обратитесь к документации API jwt:OutboundJwtAuthProvider
[7] . Пример кода можно найти по адресу [8] .
Ответы на вопросы:
Как это сделать я устанавливаю алгоритм, который я хочу использовать вместе с JWT и временем истечения?
Вы можете настроить jwt:JwtIssuerConfig
[2] , как описано выше.
Как использовать собственный закрытый ключ?
В поле jwt:JwtKeyStoreConfig
можно указать jwt:JwtIssuerConfig
[2] , используя свой закрытый ключ.
Как я могу получить токен из этого примера, например "https://ballerina.io/learn/by-example/secured-service-with-jwt-auth"? Может быть, как я могу получить токен, используя CURL (для целей тестирования)?
Это пример службы, защищенной с помощью JWT. Маркер, используемый для вызова этого сервиса, находится внизу примера. Также предоставляется способ вызова этой службы с помощью CURL.
Также мне интересно, как использовать JWT без необходимости иметь базу данных с пользователями и паролями.
Все вышеперечисленные образцы не нуждаются ни в какой базе данных или в хранилище файлов. Все конфигурации представлены в самом коде. Если есть какие-либо требования для извлечения данных из базы данных, это также возможно.
Ссылки:
1 https://ballerina.io/learn/api-docs/ballerina/jwt/index.html
2 https://ballerina.io/learn/api-docs/ballerina/jwt/records/JwtIssuerConfig.html
3 https://ballerina.io/learn/by-example/jwt-issue-validate.html
4 https://ballerina.io/learn/api-docs/ballerina/jwt/records/JwtValidatorConfig.html
5 https://ballerina.io/learn/api-docs/ballerina/jwt/objects/InboundJwtAuthProvider.html
6 https://ballerina.io/learn/by-example/secured-service-with-jwt-auth.html
7 https://ballerina.io/learn/api-docs/ballerina/jwt/objects/OutboundJwtAuthProvider.html
8 https://ballerina.io/learn/by-example/secured-client-with-jwt-auth.html