【问题标题】:How to use JWT with Ballerina如何将 JWT 与 Ballerina 一起使用
【发布时间】:2020-08-10 16:58:47
【问题描述】:

我读过 JWT,我想我理解它是如何工作的,但是当谈到芭蕾舞演员的例子时,我什么都不懂:

如何设置要与 JWT 一起使用的算法和过期时间?

如何使用自定义私钥?

我如何从这个示例中获取令牌,例如“https://ballerina.io/learn/by-example/secured-service-with-jwt-auth”?

我如何使用 CURL 获取令牌(用于测试目的)?

我也想知道如何使用 JWT 而无需拥有包含用户和密码的数据库..

我对保安和芭蕾舞演员也完全陌生。有人可以帮忙吗?

【问题讨论】:

    标签: wso2 jwt ballerina


    【解决方案1】:

    Ballerina JWT 模块[1] 提供以下功能。

    1. 发出 JWT

      您可以通过提供jwt:JwtIssuerConfig 来发布/生成 JWT。您可以配置用户名、颁发者、受众、到期时间、签名算法、自定义声明和签名配置(密钥库配置)。请参考jwt:JwtIssuerConfig[2]的API文档。示例代码可以在[3]找到。

    2. 验证 JWT

      您可以通过提供 jwt:JwtValidatorConfig 来验证 JWT。您可以配置预期的颁发者、预期的受众、时钟偏差、缓存配置和验证签名的配置(信任库配置)。请参考jwt: JwtValidatorConfig[4]的API文档。示例代码可以在[3]找到。

    3. 使用 JWT 保护服务

      您可以使用 JWT 来保护 HTTP 服务。入站 HTTP 请求的 Authorization 标头将根据提供的配置进行验证和身份验证。请参考jwt:InboundJwtAuthProvider[5]的API文档。示例代码可以在[6]找到。

    4. 使用 JWT 调用服务

      您可以使用 JWT 调用通过 JWT 进行身份验证的外部服务器。根据提供的配置,使用 Authorization 标头准备出站 HTTP 请求。请参考jwt:OutboundJwtAuthProvider[7]的API文档。示例代码可以在[8]找到。

    问题答案:

    如何设置要与 JWT 一起使用的算法和过期时间?

    您可以如上所述配置jwt:JwtIssuerConfig [2]

    如何使用自定义私钥?

    您可以使用自定义私钥配置jwt:JwtIssuerConfig [2]jwt:JwtKeyStoreConfig 字段。

    如何从这个示例中获取令牌,例如“https://ballerina.io/learn/by-example/secured-service-with-jwt-auth”? 可能我如何使用 CURL 获取令牌(用于测试目的)?

    这是一个使用 JWT 保护的示例服务。用于调用此服务的令牌在示例底部提供。还提供了如何使用 CURL 调用此服务。

    我也想知道如何使用 JWT 而无需拥有包含用户和密码的数据库..

    以上所有示例,不需要任何数据库或文件存储。所有配置都在代码本身中提供。如果需要从数据库中检索数据,也是可以的。

    参考资料:

    1https://ballerina.io/learn/api-docs/ballerina/jwt/index.html

    2https://ballerina.io/learn/api-docs/ballerina/jwt/records/JwtIssuerConfig.html

    3https://ballerina.io/learn/by-example/jwt-issue-validate.html

    4https://ballerina.io/learn/api-docs/ballerina/jwt/records/JwtValidatorConfig.html

    5https://ballerina.io/learn/api-docs/ballerina/jwt/objects/InboundJwtAuthProvider.html

    6https://ballerina.io/learn/by-example/secured-service-with-jwt-auth.html

    7https://ballerina.io/learn/api-docs/ballerina/jwt/objects/OutboundJwtAuthProvider.html

    8https://ballerina.io/learn/by-example/secured-client-with-jwt-auth.html

    【讨论】:

    • 感谢您的解释!现在我有另一个问题。我没有看到有关发布带有“范围”属性的 jwt 的任何信息,我该如何实现?提前致谢!! @Idclakmal
    • @Under_Ice 您可以在jwt:JwtIssuerConfigcustomClaims 下添加scope 属性。请参考以下示例。 jwt:JwtIssuerConfig config = { issuer: "ballerina", audience: ["ballerina.org", "ballerina.io"], customClaims: {"scope": "hello"}, keyStoreConfig: { // keystore config } }
    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2020-04-30
    • 2018-06-17
    • 1970-01-01
    相关资源
    最近更新 更多