PayPal是不是OpenID的連接標準。 This答案解釋了原因。
貝寶公開配置端點 - https://www.paypalobjects.com/.well-known/openid-configuration。它只支持HS256
,不支持或不提及RS256
。這可能是由於ID令牌的專有驗證。例如,用作不記名令牌的id令牌。
替代的解決方案是通過document描述來調用userinfo
端點。此端點可以使用access token
被調用,文件說,它會返回user_id
USER_ID - 標識在發行人的最終用戶。
雖然它似乎在用戶信息中發現user_id
爲sub
,可以從id_token提取不同。
如何找到公共密鑰,如果簽名算法是RS256
ID令牌是智威湯遜。正如您發現的那樣,它包含一個充當MAC的JWS簽名。
這個簽名是利用私鑰簽名。 id令牌的接收者可以使用公鑰驗證令牌。爲了找到公鑰,openid conenct指定一個發現文檔。您可以從specification
中瞭解更多信息在發現文檔中,您會得到一個特殊端點來推斷配置.well-known/openid-configuration
。和配置響應的必須的元數據中的一個是jwk_url
jwks_uri
REQUIRED。 OP的JSON Web密鑰集[JWK]文檔的URL。此 包含RP用來驗證來自 OP的簽名的簽名密鑰。 JWK集合還可以包含服務器的加密密鑰 ,這些密鑰由RP用於加密對服務器的請求。當兩個 簽名和加密密鑰提供了一個用(鍵使用) 參數值需要在參考JWK設爲 所有鍵指示每個按鍵的設計用途。雖然有些算法允許使用同一個密鑰同時用於簽名和加密,但這樣做的結果不是 ,因爲它不太安全。 JWK x5c參數可以是 ,用於提供所提供的密鑰的X.509表示。在使用時, 裸露鍵值必須仍然存在,並且必須與 證書中的值匹配。
他們是否提供發現文檔? [http://openid.net/specs/openid-connect-discovery-1_0.html] –
@KcDoD也許他們有,但它似乎沒有被記錄:) – Fedor