使用 OpenAM OpenID 连接代理,我创建了一个名为 Test-Client 的 OAuth 2.0/OpenID 连接客户端,其范围为 openid。
我的 OpenAM 实例部署在 Tomcat 7 上,我已经调整了我的 /etc/hosts 文件以将 localhost 显示为 openam.example.com。
使用默认凭据,我可以使用以下方法检索 OpenID Connect id 令牌:
curl -k -u Test-Client:password -d "grant_type=password&username=demo&password=changeit&scope=openid" -H "Content-Type: application/x-www-form-urlencoded" "http://openam.example.com:8080/openam/oauth2/access_token"
如果我的不记名令牌仍然有效(其中访问令牌由上述命令返回),我可以检索 OpenID 用户信息:
curl POST -H "Authorization: Bearer {{access_token}}" -k -v "http://openam.example.com:8080/openam/oauth2/userinfo"
我的问题:
我对 Open AM 没有任何经验,但要验证 ID 令牌,您需要获取 OpenID Connect 提供程序的正确公钥(如果该密钥是由非对称密码签名的)。要获得它,您应该阅读它的发现文档,该文档应位于/.well-known/openid-configuration
. 在返回的 JSON 文档中,找到一个jwks_uri
值并加载该 URL。您将获得另一个包含服务器所有公钥的 JSON 文档。然后您需要从 ID 令牌中找到一个与kid
(密钥 ID)值匹配kid
的。
如果令牌是用对称密码签名的,则没有标准化的分发方式。
有关更多信息,请参阅:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句