Keycloak keydape:在生成的令牌中包含请求的作用域的角色
我目前正在尝试使用keydape作为OICD/OAuth提供者,并计划根据应用程序中的角色使用它进行授权。为此,我需要角色来申请包含在生成的访问令牌中的会话 我的计划如下:Keycloak keydape:在生成的令牌中包含请求的作用域的角色,keycloak,openid-connect,Keycloak,Openid Connect,我目前正在尝试使用keydape作为OICD/OAuth提供者,并计划根据应用程序中的角色使用它进行授权。为此,我需要角色来申请包含在生成的访问令牌中的会话 我的计划如下: 定义已分配角色的作用域 将作用域作为可选作用域添加到KeyClope中的我的应用程序/客户端 使用内置的“角色”作用域(及其映射器)作为客户端的默认值,将有效角色添加到生成的访问令牌中 期望生成的访问令牌中的相关“角色”声明的值等于分配给登录时请求的作用域的角色 到目前为止,除了生成的访问令牌中有趣的“角色”声明包含用户
- 定义已分配角色的作用域
- 将作用域作为可选作用域添加到KeyClope中的我的应用程序/客户端
- 使用内置的“角色”作用域(及其映射器)作为客户端的默认值,将有效角色添加到生成的访问令牌中
- 期望生成的访问令牌中的相关“角色”声明的值等于分配给登录时请求的作用域的角色
- 在生成的令牌中是否可能有一个“roles”声明,其中只包含可以从请求的作用域解析的角色
是的,你可以。简易方法:
Clients Scopes
菜单部分[/auth/admin/master/console/#/realms//client Scopes
]中创建所需的作用域。将其命名为:read
(例如)您可以关闭同意屏幕上的选项
显示
&包括在令牌范围内
。我们不需要它
映射器
选项卡(范围的读取
)
- 按
按钮CREATE
- 映射器类型=
;Name=硬编码角色
;角色=r_read
r\u读取
- 救命李>
read
)添加到主客户端[/auth/admin/master/console/#/realms//clients//Client Scopes/setup Scopes
]read
)的访问令牌realm\u access.roles
部分将如下所示:“领域访问”:{
“角色”:[
“离线访问”,
“uma_授权”,
“读”
]
}
非常感谢您的详细回答!我看到的问题是,每个作用域至少需要两个角色:一个角色允许应用该作用域,另一个角色在应用该作用域时添加到令牌。我担心这会使配置更难管理,因为“冗余”配置以及用户和角色之间的不透明连接。一个可能有助于理解我的观点的示例:([user with role“r_read”]可能适用)->([scope“read”]添加)->([role“r_read_effective”],[role other_role],…与用户没有连接)
…最后但并非最不重要的是,生成的令牌仍然包含分配给用户的所有角色。