我正在使用 Spring-Security-OAuth2 来实现我自己的 oauth 服务器和资源服务器。我在我的 ResourceServer 上使用RemoteTokenService
我ResourceServerTokenService
的,它将使用CheckTokenEndpoint
OAuth 服务器上的 (/oauth/check_token) 对任何 accessToken 进行身份验证。
我已经为 api url 添加了一个 antMatcher,例如 /data/list 这将需要客户端应用程序角色/权限:“ ROLE_ADMIN ”像这样.antMatcher('/data/list').access("#oauth2.clientHasRole('ROLE_ADMIN')")
但它不工作。我在这个端点上做了一些试验和错误,我得到的结果如下:::
当 oauth 授权是仅限客户端时,即 client_credential 授权。我们从 /oauth/check_token 得到什么
{
"scope":["read"],
"exp":1412955393,
"client_id":"sample_test_client_app"
}
我们没有得到任何客户授权。那么spring security如何执行上述授权检查"#oauth2.clientHasRole('ROLE_ADMIN')"
当 oauth 授予是用户 + 客户端时,即 Authorization_code 授予我们从 /oauth/check_token 获得的内容
{
"aud":["resource_id"],
"exp":1412957540,
"user_name":"developer",
"authorities":["ROLE_USER"],
"client_id":"sample_test_client_app",
"scope":["read"]
}
对于authorization_code grnat,我们仍然没有获得客户端权限/角色。那么谁能告诉我我们如何在任何 api url 上执行 clientHasRole 身份验证?