OpenAM OpenID 连接令牌验证
OpenAM OpenID connect token verification
使用 OpenAM OpenID 连接代理,我创建了一个名为 Test-Client 的 OAuth 2.0/OpenID 连接客户端,范围为 openid。
我的 OpenAM 实例部署在 Tomcat 7 上,我调整了我的 /etc/hosts 文件以将本地主机显示为 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"
我的问题:
- 如何找到用于签署 id_token JWT 的秘密?
我没有任何使用 Open AM 的经验,但是要验证 ID 令牌,您需要获得 OpenID Connect 提供商的正确 public 密钥(如果密钥是由非对称签名的密码)。要获得它,您应该阅读其发现文档,该文档应位于 /.well-known/openid-configuration
。在返回的 JSON 文档中,找到一个 jwks_uri
值并加载该 URL。您将获得另一个 JSON 文件,其中包含服务器的所有 public 密钥。然后你需要从 ID token 中找到一个 kid
(key ID) 值匹配 kid
的
如果令牌是用对称密码签名的,则没有标准化的分发方式。
有关详细信息,请参阅:
使用 OpenAM OpenID 连接代理,我创建了一个名为 Test-Client 的 OAuth 2.0/OpenID 连接客户端,范围为 openid。
我的 OpenAM 实例部署在 Tomcat 7 上,我调整了我的 /etc/hosts 文件以将本地主机显示为 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"
我的问题:
- 如何找到用于签署 id_token JWT 的秘密?
我没有任何使用 Open AM 的经验,但是要验证 ID 令牌,您需要获得 OpenID Connect 提供商的正确 public 密钥(如果密钥是由非对称签名的密码)。要获得它,您应该阅读其发现文档,该文档应位于 /.well-known/openid-configuration
。在返回的 JSON 文档中,找到一个 jwks_uri
值并加载该 URL。您将获得另一个 JSON 文件,其中包含服务器的所有 public 密钥。然后你需要从 ID token 中找到一个 kid
(key ID) 值匹配 kid
的
如果令牌是用对称密码签名的,则没有标准化的分发方式。
有关详细信息,请参阅: