我们公司的用户存储在ldap(oracle internet目录)中。用户有特定的组,例如管理员、用户等。我需要将这些组映射到我的客户端应用程序角色。客户机应用程序是带有keycloak-spring-security-adapter(pom)的测试Spring Boot应用程序。
我在Keycloak管理控制台中执行的步骤:
现在,我在浏览器中访问客户机应用程序,并将其重定向到keycloak,在那里我使用ldap用户密码进行身份验证。
我希望经过身份验证的用户在应用程序中具有管理员角色。但实际上它只有标准的keycloak角色,而不是在客户机中创建的自定义角色:https://prnt.sc/12fc3fx Controller methods with@preauthorize(“hasrole('admin')”)
响应403。
UPD:
我在客户端应用程序外(使用http客户端)向keycloak authendpoint发出了http请求,在接收的访问令牌中,我确实在resource_access
部分中看到了自定义的管理和用户角色:
"realm_access": {
"roles": [
"offline_access",
"uma_authorization"
]
},
"resource_access": {
"adapter-client-test": {
"roles": [
"ADMIN",
"USER"
]
},
所以我相信keycloak本身配置正确,但是spring boot客户端应用程序有问题吗?
结果,我错过了keycloak.use-resource-role-mappings:true
在application.yml中。
来自医生:
use-resource-role-mappings
如果设置为true,适配器将在令牌内部查找用户的应用程序级角色映射。如果为false,它将查看用户角色映射的领域级别。这是可选的。默认值为false。
我有一个用KeyCloak保护的spring boot应用程序。领域中的每个用户都有我的资源(客户机)的角色。角色配置在用户选项卡上,对于角色映射选项卡下的特定用户,角色配置为客户端角色: 我还使用了与LDAP Active Directory的集成,所有用户都来自LDAP Active Directory。现在,如果我想为Active Directory(AD)组添加特定的角色,我必须进入Act
在我的服务器中。xml我有以下配置: 认证后我的主题是这样的: 组 ID 是由我的自定义登录模块设置的,因为 ldap 注册表中的组在具有成员的属性中没有条目,因此不是由标准 Liberty 登录模块设置的。因此,在我的自定义模块中,我在LDAP中搜索用户,并将条目的组添加到私有凭据的groupIds数组中: 我还需要做些什么吗?或者只需要将组的字符串添加到数组中就足够了? 我还尝试使用secur
我有自由配置文件身份验证与MS活动目录。但是我无法设置到组的角色映射。 我已在web.xml中创建了安全角色: 我用wmm将角色映射到ibm-application-bnd.xml中的一个组,该组工作: 但这并不适用于自由档案 我需要更改访问id吗?
我试图使用KeyCloak的管理API,以便向用户角色映射添加客户端级别的角色。为此,我使用管理endpoint: 不确定这里的问题是什么,因为该角色存在于系统中。这里会出什么问题?
我正在尝试将yml文件映射到Spring boot应用程序中具有字符串键和PromotionPolicy值的HashMap,并使用默认的Spring boot实现来解析这些值,但当我尝试从映射中读取值时,PromotionPolicy对象只包含所有实例的默认值[0,false,false]。 我的yml是: 我拥有的模型是: 组件java类如下: 尝试在此处显示值: 我的输出如下: 而我希望结果包
我正在尝试将我的对象[]数组映射并过滤到int[]数组。如果对象是int,效果很好,但如果不是int,则抛出强制转换异常。我想知道我是否可以在lambda表达式中附加一个try/catch?这是我的代码: 或者更好的方法是试着抓住整个街区?