我目前正在使用bshaffer PHP庫here構建OAuth2提供程序。OAuth2返回JWT代替access_token
我發現了IETF draft specifications,它們概述了具體調用JSON Web Tokens作爲授權授權和客戶端認證的實現。
然而,我感興趣的實現是返回JWT來代替常規訪問令牌,如here所示。在死鏈接的情況下,訪問令牌響應被粘貼在下面。
{
"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpZCI6IjYzMjIwNzg0YzUzODA3ZjVmZTc2Yjg4ZjZkNjdlMmExZTIxODlhZTEiLCJjbGllbnRfaWQiOiJUZXN0IENsaWVudCBJRCIsInVzZXJfaWQiOm51bGwsImV4cGlyZXMiOjEzODAwNDQ1NDIsInRva2VuX3R5cGUiOiJiZWFyZXIiLCJzY29wZSI6bnVsbH0.PcC4k8Q_etpU-J4yGFEuBUdeyMJhtpZFkVQ__sXpe78eSi7xTniqOOtgfWa62Y4sj5Npta8xPuDglH8Fueh_APZX4wGCiRE1P4nT4APQCOTbgcuCNXwjmP8znk9F76ID2WxThaMbmpsTTEkuyyUYQKCCdxlIcSbVvcLZUGKZ6-g",
"client_id":"CLIENT_ID",
"user_id":null,
"expires":1382630473,
"scope":null
}
到位的正常授權補助定期生成的訪問令牌的返回JWT。客戶和用戶憑據授權對我來說更爲重要,因爲我們只處理第一方API訪問。
此實現看起來很理想,因爲我不需要維護一個生成的令牌存儲區,從而限制了所需的基礎架構數量。在某些時候,如果我們向第三方開放API,我們需要一個用於各種pub/priv密鑰的密鑰存儲區來驗證每個客戶端的令牌,並在某些惡意方偷走加密密鑰時限制風險。
我覺得這是一個很好的依賴於非對稱加密和SSL/TLS的實現。但是,我是否存在潛在的安全風險?
你的問題的真實性,你得到的標記示例不使用標準的JWT索賠。例如,它具有'client_id'而不是'sub'(這可能來自舊規格,目前的要求在這裏:https://tools.ietf.org/html/draft-ietf-oauth-jwt-bearer-11 #section-3) – stash 2014-10-30 16:43:34
謝謝!我從中得到迴應的文檔必須是過時的,v1.5正在生成帶有「sub」,「iss」等的標記。請注意仔細檢查。 – Jamie 2014-10-30 17:42:12
缺點是,如果沒有令牌數據庫,您無法撤消發佈的JWT令牌。 – 2014-10-31 10:13:12