我们正在将我们的 keycloak 设置从 6.0.1 升级到 11.0.0 并且似乎从 Keycloak 10 开始,如果范围参数无效,令牌生成会抱怨错误“无效范围”。
最初,我们使用带有 RBAC(分配给他们的用户和角色)和全范围客户端(仅启用直接访问授权 = true)的 Keycloak 3,这在我们在范围内传递所需角色并用于获取请求的访问令牌时工作正常角色(在范围内),后来我们将其更新为 Keycloak 6,它曾经在此设置下也可以正常工作,但是将其更新为 Keycloak 11 会破坏它,因为我们不使用细粒度范围,因此将现有角色传递给范围有点破坏它,但是,如果我不提供任何范围,那么它可以正常工作。
我的设置如下所示
角色:
- 角色1
- 角色2
- 角色3
用户:
- 用户 1
- 用户 2
用户角色映射
- 角色 1、角色 2 --> 用户 1
- ROle3 --> 用户 2
客户
- Client1 AccessType: Cofidential Direct Access Grants: Enabled Scoped: Full Scoped
生成的令牌
{
"exp": 1598869296,
"iat": 1598867496,
"jti": "b5cd4395-1ba2-471b-9e3f-86fa7c699d72",
"iss": "http://localhost:8480/auth/realms/EDP",
"aud": "account",
"sub": "2efa51cd-1afb-4f18-83c4-12e4017739b5",
"typ": "Bearer",
"azp": "service",
"session_state": "a4925385-b787-4ae7-a076-a4b92b5df87c",
"acr": "1",
"realm_access": {
"roles": [
"Rol1",
"offline_access",
"uma_authorization",
"Rol2"
]
},
"resource_access": {
"account": {
"roles": [
"manage-account",
"manage-account-links",
"view-profile"
]
}
},
"scope": "default roles",
"unique_name": "User1",
"preferred_username": "User1",
"tid": "Foo"
}