2016-01-20 64 views
1

我们的移动客户端应用使用https:通过将客户端ID和ClientSecret与grant_type为“client_credentials”生成接入端口/的oauth2 /令牌服务从身份服务器:// identityserver令牌。生成的访问令牌用于从ESB调用API。获取从WSO2身份服务器的唯一的OAuth令牌API

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

有关示例,ClientX请求OAuth凭证这将有一定的到期时间。这个令牌是否可以作为ClientX的独特功能?

目前所有即将客户端调用将获得相同的访问令牌作为其已经从ClientX的要求产生的。如果一个客户非常晚的要求一个令牌,它会在几乎到期的时候得到相同的标记。

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

回答

0

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

由于这是一个移动应用程序,一旦您的移动应用程序获取该令牌,它将被使用,直到过期日期并且不会有改变它的必要性,因为移动设备属于单个用户。因此,对于相同的范围,令牌将相同,直到过期。

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

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

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

例如:使用易趣购买产品。

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

找到以下博客,这将有助于您指导选择范围。 [1]

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

+0

感谢您的回答,但不明白为什么“client_credentials”不提供不同的访问令牌?另外,如果有刷新令牌交换,为什么不可能为同一移动应用程序使用不同的访问令牌? 正如你所解释的,对于不同的客户端是否需要使用“密码”作为授权类型? – Kiruthika

0

我将假定移动应用程序实例每个用户的约束。

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

例如,你有客户-X和客户端Y都使用client_credentials补助。身份服务器(授权服务器)会给,因为这对客户-x和客户-Y访问令牌约为授权客户-x和客户-Y访问的资源,而不是关于授权用户。这意味着无论您在client-x或client-y中请求access_token的用户,他们都可以获得一个(假设他们已通过身份验证)。反之,即使通过身份验证的客户端和身份服务器也无法获得访问令牌来自客户端-Z(客户端-Z没有在身份服务器注册)

如果您的OAuth 2。0客户端是基于浏览器的,您可以使用隐式授予,如果它是服务器,您可以使用授权许可资源所有者密码凭证

相关问题