gpt4 book ai didi

javascript - 将 LDAP 组成员身份转换为 Keycloak 中的 SAML 属性

转载 作者:行者123 更新时间:2023-12-02 23:41:04 25 4
gpt4 key购买 nike

我需要使用 Keycloak 将组成员身份从外部 LDAP 目录转换为 SAML session 中的 SAML 属性。每个用户的组成员身份数量未定义。组名称将具有 Amazon AWS 的租户 ID 以及 Amazon 中为用户定义的 Angular 色(例如 AWS-11111111111-Administrator),因此我非常确定必须在客户端配置中使用 JavaScript Mapper并进行一些子字符串修改。

  • 有没有一种方法可以以某种方式测试 Javascript,而无需尝试错误/登录并检查 SAML session ?
  • 如何从 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 数组在最后没有迭代(除了鼠标悬停提示所说的之外)。

您需要记住,这是服务器端 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;

关于javascript - 将 LDAP 组成员身份转换为 Keycloak 中的 SAML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56077875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com