2016-01-20 42 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客戶端是基於瀏覽器的,您可以使用隱式授予,如果它是服務器,您可以使用授權許可資源所有者密碼憑證

相關問題