【问题标题】:Keycloak custom user federation with user attributes具有用户属性的 Keycloak 自定义用户联合
【发布时间】:2022-01-23 19:25:46
【问题描述】:

我已经为 Keycloak 实现了一个带有 AbstractUserAdapter 的自定义 UserStorageProvider,用于从外部数据库中检索用户并使用存储在该数据库中的凭据登录用户。一切正常,数据只能通过 Keycloak 管理面板读取。

我想从存储在外部数据库中的数据中为用户添加额外的属性,我想通过属性映射器将此数据添加到令牌中,有没有办法做到这一点?或者是否需要实现 AbstractUserAdapterFederatedStorage?后者的问题在于它不是只读的,并且允许编辑传输到 keycloak 用户存储的用户数据。

【问题讨论】:

    标签: keycloak federation


    【解决方案1】:

    这真的取决于你的实现。如果您可以访问所需的属性数据和用户,您可以简单地为他分配新属性,即:

    KeycloakSession session = // get session somewhere
    RealmModel currentRealm  = session.getContext().getRealm();
    UserModel user = getUserSomehow(session, currentRealm);
    
    user.setSingleAttribute("attributeName", "attributeValue");
    
    ...
    
    private UserModel getUserSomehow(KeycloakSession session, RealmModel realm) {
       return KeycloakModelUtils.findUserByNameOrEmail(context.getSession(), context.getRealm(), "<username>");
       // or (cached model):   
       // return session.users().getUserById("<userId>", realm);
       // or (Un-cached model): 
       // return session.userStorageManager().getUserById("<userId>", realm);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-01-09
      • 2017-12-04
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 2019-11-01
      • 2021-03-22
      • 2022-11-14
      • 2018-09-09
      相关资源
      最近更新 更多