我已经部署了OpenAM-AccessManagement(6.0.0.4)版本。我正在使用Rest API使用密码流来获取访问令牌。并尝试自省令牌。
1) get access token
$ curl \
--request POST \
--user "clientid:clientsecret" \
--data "grant_type=password&username=user&password=welcome&scope=openid" \
http://openam.mydomain.com:8080/openam/oauth2/access_token
2) get header token (to be used for authorization header while token
introspection in step 3)
$ curl \
--request POST \
--user "clientid:clientsecret" \
--data "grant_type=client_credentials&scope=openid" \
http://openam.mydomain.com:8080/openam/oauth2/access_token
3) introspect token
$ curl \
--request POST \
--header "Authorization: Basic ZGVtbzpjaGFuZ2VpdA==" \
--data "token=f9063e26-3a29-41ec-86de-1d0d68aa85e9"
"https://openam.mydomain.com:8080/openam/oauth2/introspect"
令牌自检始终以{“ active”:false}返回。我想我缺少一些OpenAM配置。有什么想法吗?
更新
正如@BernhardThalmayr所建议的,当我给令牌作为查询参数时,它正在工作。这里有3个问题:
1)我需要将授权标头提供为已编码的clientid:clientsecret。我不能将步骤2中生成的承载令牌用作授权标头。
使用gluu作为IDP,承载令牌被接受为令牌自省的auth头,但是使用openAm可以 { “ error_description”:“无效的授权”, “错误”:“ invalid_client” }
我可以在文档中看到针对openam微服务的令牌验证承载令牌,该令牌被用作auth标头。 https://backstage.forgerock.com/docs/platform/6/mservices-guide/#sec-validate-am-sso-token。没有微服务怎么办?
2)范围列表为空:我在客户端配置中添加了范围,如openid,introspect,mail,cn,profile。静态令牌自省会返回范围数组为空
3)openam / oauth2 / userinfo端点仅返回{ “ sub”:“ amadmin” }
答案 0 :(得分:1)
IMHO AM不符合规范,因为它要求将令牌的值作为查询参数[backstage.forgerock.com/docs/am/6/oauth2-guide/…发送] .ietf.org / html / rfc7662]。您是否尝试提供AM文档中记录的令牌?