使用ldap中的sAMAcountName作为用户名

时间:2018-05-04 06:42:12

标签: ldap keycloak

我将我们的活动目录连接到keycloak(4.0.0.Beta1)并导入了用户 - 这很好。

但用户名应填写sAMAccountName。所以我将Username LDAP attribute更改为。

但点击Synchronize all users后,我在控制台窗口中收到此错误:

8:20:13,372 ERROR [org.keycloak.storage.ldap.LDAPStorageProviderFactory] (default task-119) Failed during import user from LDAP: org.keycloak.models.ModelException: User returned from LDAP has null username! Check configuration of your LDA
 mappings. Mapped username LDAP attribute: cn, user DN: CN=Mustermann Max,OU=Normung,OU=Mech,OU=Konstruktion,OU=Abteilungen,DC=company,DC=org, attributes from LDAP: {whenChanged=[2017037125253.0Z], whenCreated=[20140520092805.0
], mail=[Max.Mustermann@company.org], givenName=[Max], sn=[Mustermann], userAccountControl=[66048], pwdLastSet=[130750516258418527]}
       at org.keycloak.storage.ldap.LDAPUtils.getUsername(LDAPUtils.java:113)
       at org.keycloak.storage.ldap.LDAPStorageProviderFactory$3.run(LDAPStorageProviderFactory.java:521)
       at org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:227)
       at org.keycloak.storage.ldap.LDAPStorageProviderFactory.importLdapUsers(LDAPStorageProviderFactory.java:514)
       at org.keycloak.storage.ldap.LDAPStorageProviderFactory.syncImpl(LDAPStorageProviderFactory.java:469)
       at org.keycloak.storage.ldap.LDAPStorageProviderFactory.sync(LDAPStorageProviderFactory.java:407)
...

我尝试了一些地图制作工具(特别是username),但没有运气。似乎只有少数属性从ldap服务器读取(请参阅输出中的attributes from LDAP:...)。

即:whenChanged,whenCreated,mail,givenName,sn,userAccountControl,pwdLastSet。

如何将sAMAcountName属性作为用户名?

2 个答案:

答案 0 :(得分:5)

我刚刚在4.1.0中对其进行了测试。最终,当您将用户名LDAP属性更改为 sAMAccountName 以及时,它就可以正常工作的 用户名映射器中的 LDAP属性也与 sAMAccountName 相同。

  

我尝试了一些映射器(尤其是用户名),但是没有运气。

您的问题表明,您已经尝试在用户名映射器中执行某些操作。因此,您绝对处在正确的轨道上。您的版本中存在错误,或者两个字段不正确匹配。

答案 1 :(得分:0)

对我来说,它奏效了。请找到以下过程:

1)在用户联合-> LDAP Provider->中,有一个名为“ UserName LDAP Attribute”的设置。 (如此处ldap provider settings所示)

2)选择“映射器”选项卡并编辑“用户名”映射器,然后更改为以下设置:username mapper settings