【问题标题】:Transforming LDAP group memberships to SAML Attributes in Keycloak在 Keycloak 中将 LDAP 组成员身份转换为 SAML 属性
【发布时间】:2019-05-10 12:36:29
【问题描述】:

我需要使用 Keycloak 将组成员身份从外部 LDAP 目录转换为 SAML 会话中的 SAML 属性。每个用户将有未定义数量的组成员身份。组名称将具有 Amazon AWS 的租户 ID 和 Amazon 中用户的定义角色(例如 AWS-11111111111-Administrator),所以我很确定必须在客户端配置中使用 JavaScript Mapper并做一些子串修改。

  • 有没有办法以某种方式测试 Javascript 而无需尝试错误/登录并检查 SAML 会话?
  • 如何在 Keycloak 的 Javascript 映射器中从 LDAP 用户获取组作为字符串值?

LDAP 组示例(每个用户多个组)

AWS-11111111111-Administrator
AWS-11111111111-Contributer

SAML 属性必须如下所示:

arn:aws:iam::11111111111:saml-provider/ProviderName,arn:aws:iam::11111111111:role/Administrator
arn:aws:iam::11111111111:saml-provider/ProviderName,arn:aws:iam::11111111111:role/Contributer

【问题讨论】:

    标签: javascript saml keycloak mapper


    【解决方案1】:

    我帮自己解决了这个问题。对我来说最大的问题是缺少“测试按钮”来验证代码在做什么。此外,发现一个简单的 Java Script Array 最终没有被迭代(除了 Mouse-Over 提示)。

    您需要记住,这是服务器端 Nashorn 解释器,因此它与通常在浏览器中运行的 Javascript 没有太大关系……抱歉我的问题可能不准确:

    /**
    
    
     * Available variables: 
     * user - the current user
     * realm - the current realm
     * clientSession - the current clientSession
     * userSession - the current userSession
     * keycloakSession - the current userSession
     */
    
    
    //insert your code here...
    
    
    // use the Identifier variable to filter the relevant groups for this client
    var identifier = 'aws'; 
    
    var StringArray = Java.type("java.lang.String[]");
    var ArrayList = Java.type('java.util.ArrayList');
    
    var GroupSet = user.getGroups();
    var Output = new ArrayList();
    var identifier = identifier.toLowerCase();
    
    for each (var group in GroupSet) {
        if (group.getName().toLowerCase().contains(identifier)){
        var GroupNameArray = (group.getName().split('-'));
        var tenant = GroupNameArray[2];
        var role = GroupNameArray[3];
        Output.add("Arn:aws:iam::"+tenant+":saml-provider/company,arn:aws:iam::"+tenant+":role/"+role);
        }
    }
    
    Output;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多