Spring boot KeyClope:将ldap组映射到springboot角色
我们公司的用户存储在ldap(oracle internet目录)中。用户具有特定的组,例如管理员、用户等。 我需要将这些组映射到我的客户端应用程序角色。客户端应用程序是带有KeyClope Spring安全适配器()的测试Spring引导应用程序 我在KeyClope管理控制台中执行的步骤:Spring boot KeyClope:将ldap组映射到springboot角色,spring-boot,keycloak,Spring Boot,Keycloak,我们公司的用户存储在ldap(oracle internet目录)中。用户具有特定的组,例如管理员、用户等。 我需要将这些组映射到我的客户端应用程序角色。客户端应用程序是带有KeyClope Spring安全适配器()的测试Spring引导应用程序 我在KeyClope管理控制台中执行的步骤: 在用户联盟菜单中,使用ldap创建用户联盟(不导入)。检查是否可以在用户菜单中找到ldap用户 添加组ldap映射器检查ldap组在“组”菜单中是否可见。用户还具有正确的组成员资格: 在客户端中,为我的应
我希望经过身份验证的用户在应用程序中具有管理员角色。但实际上它只有标准的keydape角色,而没有我在client:Controller方法中创建的自定义角色,带有
@PreAuthorize(“hasRole('ADMIN')”)
响应403
我错过了什么?谢谢钥匙斗篷12.0.3,弹簧靴2.4.2
upd: 我已在我的客户端应用程序外部(使用http客户端)向Keyclope auth endpoint发出http请求,并且在收到的访问令牌中,我确实在
resource\u access
部分看到了我的自定义管理员和用户角色:
"realm_access": {
"roles": [
"offline_access",
"uma_authorization"
]
},
"resource_access": {
"adapter-client-test": {
"roles": [
"ADMIN",
"USER"
]
},
所以我相信keydove本身的配置是正确的,但是spring boot客户端应用程序有问题吗?事实证明,我错过的一件事是application.yml中的
keydove.use-resource-role-mappings:true
发件人:
使用资源角色映射如果设置为true,适配器将在令牌中查找用户的应用程序级角色映射。如果为false,它将在领域级别查看用户角色映射。这是可选的。默认值为false 应用程序验证后,用户收到自定义客户端级别的角色。尝试在客户端下添加“用户客户端角色”类型的映射器。下面回答了一个类似的问题