【发布时间】:2021-03-30 13:40:34
【问题描述】:
我是 keycloak 的新手,按照互联网上的教程,我配置了一个新的领域“示例”,其中包含客户端“app-backend”、相关角色“admin”(未组合)和领域角色“app- admin”(由客户端角色“admin”组成)。
我还创建了一个用户,并分配了领域角色“管理员”。 此时一切正常,但是,当我通过对 keycloak 服务器(http://localhost:8080/auth/realms/barber-reservation/protocol/openid-connect/token)的 POST API 调用请求访问令牌时,我已经注意到客户端角色不包含在“resource_access”对象中,相反我在其中找到了“account”对象。
这种奇怪的行为使我的 Spring Boot 应用程序的所有授权验证都失败。
在收到访问令牌之后:
{
"exp": 1608478284,
"iat": 1608477984,
"jti": "5ce17d4d-e3b3-4207-8010-45c0895a9a6a",
"iss": "http://localhost:8080/auth/exmple/app-backend",
"aud": [
"app-backend"
],
"sub": "d3fcc7df-878e-4363-91d6-f06437de5f90",
"typ": "Bearer",
"azp": "app-frontend",
"session_state": "dad4ab85-850a-4c63-8a26-7b3b6de9f821",
"acr": "1",
"allowed-origins": [
"*"
],
"realm_access": {
"roles": [
"app-admin"
]
},
"resource_access": {
"account": {
"roles": [
"manage-account",
"manage-account-links",
"view-profile"
]
},
"app-backend": {
"roles": [
"admin"
]
}
},
"scope": "openid email profile",
"email_verified": true,
"name": "Name Surname",
"preferred_username": "user@email.com",
"locale": "it",
"given_name": "Name",
"family_name": "Surname",
"email": "user@email.com"
}
我期待客户端角色部分包含在“resource_access”对象中,如下所示:
"resource_access": {
"app-backend": {
"roles": [
"admin"
]
}
}
关于如何纠正这种奇怪行为的任何想法? 谢谢。
【问题讨论】:
标签: realm keycloak access-token roles