使用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"
我的问题:
答案 0 :(得分:3)
我没有使用Open AM的经验,但要验证ID令牌,您需要获取OpenID Connect提供程序的正确公钥(如果密钥是由非对称密码签名的)。要获得它,您应该阅读其发现文档,该文档应位于/.well-known/openid-configuration
。在返回的JSON文档中,找到jwks_uri
值并加载该URL。您将获得另一个包含服务器所有公钥的JSON文档。然后,您需要从ID令牌中找到kid
(密钥ID)值与kid
匹配的值。
如果令牌是对称密码,则没有标准化的分发方式。
有关详细信息,请参阅: