2015-05-01 66 views
1

TL; DR;是否有任何方法將(承載?)令牌綁定到唯一的客戶端,並在HTTP REQ頭中表示該令牌?如何識別客戶唯一性?

在用戶擁有服務帳戶的情況下。同一用戶應該能夠使用不同的客戶端應用程序(不同的瀏覽器,原生移動應用程序)來使用服務。對於每個不同的環境,最好的方法是應該遵循一個登錄過程(OAuth2?),每個應用程序獲取一個令牌(不記名令牌)。然後,每個客戶端都能夠使用這些服務,並且通過使用該令牌識別他們自己,服務提供商可以對其使用範圍進行限定。

雖然服務提供商想要將每個令牌的使用隔離到特定客戶端時會發生什麼情況,但這在大多數情況下都能正常工作?

當然,在安全事件中,提供者可以放棄持有令牌的集合/表,但不會更好地讓客戶傳遞其唯一標識符(可能是md5(concat(app.version, environment.name, username)))的MD5及其身份驗證令牌?

P.S .:我認爲傳遞這樣的值作爲一個屬性在身體的有效載荷是無效的。由於這種認證步驟應該在服務器讀取HTTP頭時進行。

回答

0

客戶端由客戶端標識符(client_id)唯一標識。 client_id可能會返回承載令牌訪問驗證的結果,並且資源服務器可能會保留一個黑名單,儘管授權服務器更有可能將其列入黑名單。

如果你正在尋找通過確保客戶提出的令牌是實際的客戶端令牌頒發給,那是OAuth 2.0用戶的擴展得到解決,以提高安全性,請參閱:http://www.thread-safe.com/2014/04/oauth-proof-of-possession-drafts.html

所以WRT 。以客戶唯一性:通過client_id確保。 WRT。安全性:任何不包含將令牌綁定到客戶端的祕密都不會提高安全性。

+0

我明白你的觀點,毫無疑問'client_id'是過程的一部分。是客戶唯一性可能被欺騙。我猜我可以通過執行'md5(concat(app.version,env.name,username,verifier(salt,username,secret)))'''''''''''''''''感謝您的參考! –