Ale*_*lex 31 authentication customization jboss principal keycloak
在我的休息服务中,我可以在认证后使用获取主要信息
KeycloakPrincipal kcPrincipal = (KeycloakPrincipal) servletRequest.getUserPrincipal();
Run Code Online (Sandbox Code Playgroud)
声明.
Keycloak校长并不知道我需要有关经过身份验证的用户的所有信息.是否可以自定义我自己的主体类型?在keycloak-server-end上我开发了一个用户联合提供程序.我看到UserModel可以为我的用户添加一组自定义属性.
是否可以在该代码中插入我的自定义主体?
是否可以从keycloak principal检索此属性?
这是什么方式?
lis*_* p. 62
要添加自定义属性,您需要做三件事:
第一个在这里解释得很好:https://www.keycloak.org/docs/latest/server_admin/index.html#user-attributes
添加声明映射:
访问权限:
final Principal userPrincipal = httpRequest.getUserPrincipal();
if (userPrincipal instanceof KeycloakPrincipal) {
KeycloakPrincipal<KeycloakSecurityContext> kp = (KeycloakPrincipal<KeycloakSecurityContext>) userPrincipal;
IDToken token = kp.getKeycloakSecurityContext().getIdToken();
Map<String, Object> otherClaims = token.getOtherClaims();
if (otherClaims.containsKey("YOUR_CLAIM_KEY")) {
yourClaim = String.valueOf(otherClaims.get("YOUR_CLAIM_KEY"));
}
} else {
throw new RuntimeException(...);
}
Run Code Online (Sandbox Code Playgroud)
希望这有助于并适合您的用例.我用它来添加自定义主题的自定义属性.
Nee*_*wal 33
选择用户>查找>单击ID>转到属性选项卡>添加属性>例如:电话>保存

选择客户端>单击客户端ID>转到Mappers选项卡>创建映射器



获取自定义属性


对于 Keycloak > 18,映射器的配置已移至 UI 中:
在Clients > Your selected client选项卡下Client Scopes,必须选择account-dedicated:
可以添加自定义映射器:
| 归档时间: |
|
| 查看次数: |
38448 次 |
| 最近记录: |