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