【问题标题】:WSO2 IS and JWT TokenWSO2 IS 和 JWT 令牌
【发布时间】:2020-03-10 07:18:03
【问题描述】:

我有如下安全用例,正在考虑使用 WSO2 身份服务器 -

应用程序需要使用来自 WSO2 Identity Server 的身份验证服务。该应用程序接受用户/密码。使用这些凭证,应用程序需要对 WSO2 Identity Server 进行 API 调用,如果用户是有效用户,WSO2 Identity Server 需要回复有效的 JWT 令牌和声明。 (用户被挂载到 Identity Server 中的用户存储之一。)

我可以使用 WSO2 身份服务器来支持这个用例吗?

【问题讨论】:

    标签: wso2 wso2is


    【解决方案1】:

    根据您的描述,客户端本身不会将用户重定向到授权服务器,而是会询问用户资源所有者的用户名和密码。然后,客户端会将这些凭据连同客户端自己的凭据(客户端 ID 和客户端密码)一起发送到授权服务器。然后授权服务器(WSO2 IS)将提供带有请求声明的 JWT 令牌。这可以通过 WSO2 身份服务器实现。

    请参考:https://is.docs.wso2.com/en/5.9.0/learn/resource-owner-password-credentials-grant/

    用于设置示例:https://is.docs.wso2.com/en/5.9.0/develop/deploying-the-sample-app/#deploying-playground2-webapp

    使用示例尝试密码授予:https://is.docs.wso2.com/en/5.9.0/learn/try-password-grant/

    【讨论】:

    • 感谢您的回复,是否需要进行特定设置才能生成 JWTtoken 及其格式(header.payload.secret)?
    • is.docs.wso2.com/en/5.9.0/develop/deploying-the-sample-app/… 在本文档中的 deploying-playground2-webapp-> 配置服务提供者下,您可以选择令牌类型。如果您需要 JWT,请将其选为 JWT。 docs.wso2.com/display/IS580/… 请参阅本文档中请求的声明部分,以在令牌中包含用户信息。
    • 我正在浏览上面的链接,我可以看到响应格式如下
    • 我正在浏览您上面提到的链接,我可以看到提到的示例响应采用以下格式。 ' {"token_type":"Bearer","expires_in":2510,"refresh_token":"5ba3dedc77581df5f84f9b228eef0b91","access_token":"ca19a540f544777860e44e75f605d927"}'。这不像标头那样采用 JWT 格式。有效载荷.签名。 WSO2 中是否有配置以获取 JWT 格式的响应?
    • 你应该发送 scope=openid 作为请求参数
    【解决方案2】:

    应用程序需要使用来自 WSO2 Identity 的身份验证服务 服务器。应用程序接受用户名和密码

    您正在使用一个应用程序,用户可以使用用户名和密码对该应用程序进行身份验证。用户存在于身份服务器的用户存储中。如果用户存在于 IS 中,IS 可以充当身份提供者并对用户进行身份验证。

    如果用户是合法用户,WSO2 Identity Server 需要回复 使用有效的 JWT 令牌和声明

    WSO2 IS 支持不同的协议。如果服务提供者使用 OpenID Connect,一旦用户通过身份验证,一个 ID 令牌(连同访问令牌)将被发送给服务提供者。此ID 令牌是一个 JWT 令牌,其中包含 header.body.signature 并且正文包含声明。在 OpenID Connect 中,应用程序可以根据要求使用不同的授权类型。 授权码、隐式和混合流可用于对用户进行身份验证,并将用户的声明作为 JWT 令牌与访问令牌一起获取。

    WSO2 Identity Server 通过 OpenID Connect 支持所有这些授权类型。当用户通过应用程序进行身份验证时,WSO2 身份服务器会将 JWT 令牌发送给应用程序。

    请参阅此document 以进一步了解 WSO2 IS 中的 OpenID Connect 身份验证。也请参阅此 OpenID Connect 规范。

    【讨论】:

    • 非常感谢您的回复。但我的要求很简单,我们正在评估使用 WSO2IAM 作为统一用户存储,我们从公司 AD 和数据库存储映射用户存储等。我们将介绍一个应用程序,这个应用程序没有能力从 AD 验证用户或数据库。这个想法是将用户和密码传递给 WSO2IAM 服务器,WSIAM 服务器从 AD 用户存储验证此用户并回复 JWT 令牌和声明。 WSO2IAM 是否可以公开两个 api ,一个用于访问令牌,另一个用于刷新令牌。我在哪里可以看到这个用例的 WSO2 API 的简单文档
    • 是的。这可以通过使用 OpenID Connect 的 WSO2 身份服务器来完成。应用程序不需要对用户进行身份验证。身份服务器对用户进行身份验证。一旦用户成为有效用户,Identity Server 的令牌端点将发出 JWT ID 令牌以及访问令牌和刷新令牌。您不需要两个 api。令牌端点将返回令牌响应中的所有令牌。
    猜你喜欢
    • 2022-06-18
    • 2022-12-15
    • 2018-02-07
    • 2022-11-02
    • 2019-04-17
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多