【问题标题】:Get a Unique OAuth token API from the WSO2 Identity Server从 WSO2 身份服务器获取唯一的 OAuth 令牌 API
【发布时间】:2016-04-25 23:56:16
【问题描述】:

我们的移动客户端应用程序使用来自 Identity Server 的 https://identityserver:port/oauth2/token 服务,通过将 ClientID 和 ClientSecret 与 grant_type 作为“client_credentials”传递来生成访问令牌。生成的访问令牌用于从 ESB 调用 API。

根据实现,ClientID 和 ClientSecret 将存储在设备中。

例如,ClientX 请求了一个 Oauth 令牌,该令牌将具有一定的到期时间。这个令牌可以作为 ClientX 的唯一令牌吗?

目前所有即将到来的客户端调用都将获得与从 ClientX 的请求中生成的相同的访问令牌。如果客户端请求令牌的时间很晚,它将获得几乎过期的相同令牌。

有没有办法让这个令牌对客户来说是唯一的?

【问题讨论】:

    标签: oauth-2.0 wso2is


    【解决方案1】:

    在您的情况下,如果您使用“client_credentials”作为授权类型,资源所有者也是客户端。

    由于这是一个移动应用程序,一旦您的移动应用程序获得令牌,它将一直使用到到期日,并且没有必要更改它,因为移动设备属于单个用户。因此,令牌在相同范围内将是相同的,直到它过期。

    例如:BBC 新闻移动应用程序。

    如果您需要不同的访问令牌,则需要使用不同的范围。

    如果不同的客户端访问同一个 API,您将需要不同的访问令牌。在这种情况下,您可以使用“PASSWORD”授权类型作为唯一访问令牌。

    例如:使用 ebay 购买产品。

    因此您应该正确定义您的范围以识别访问令牌的使用。

    查找以下博客,该博客将帮助您指导选择范围。 [1]

    [1]http://wso2.com/library/articles/2014/02/securing-your-web-service-with-oauth2-using-wso2-identity-server-1/

    【讨论】:

    • 感谢您的回答,但不明白为什么“client_credentials”不提供不同的访问令牌?此外,如果有刷新令牌交换,为什么同一移动应用程序不能有不同的访问令牌?正如您所解释的,对于不同的客户端,是否有必要使用“密码”作为授权类型?
    【解决方案2】:

    我假设移动应用程序实例是按用户绑定的。

    如果您想为绑定到会话的每个用户获取不同的访问令牌,请不要使用 client_credential 授权类型。

    例如,您有 client-x 和 client-y 都使用 client_credentials 授权。身份服务器(授权服务器)将为 client-x 和 client-y 提供访问令牌,因为这是关于 授权 client-x 和 client-y 访问资源而不是授权用户。这意味着您在 client-x 或 client-y 中拥有的任何用户请求 access_token,他们都可以获得一个(假设他们已通过身份验证)。反之亦然,即使客户端和身份服务器都经过身份验证,如果请求,用户也无法获得访问令牌来自client-z(client-z未在身份服务器中注册)

    如果您的 Oauth 2.0 客户端是基于浏览器的,您可以使用 implicit grant,如果是服务器,您可以使用 authorization grantresource owner password凭证

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 2022-11-21
      相关资源
      最近更新 更多