我将我们的活动目录连接到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属性作为用户名?
答案 0 :(得分:5)
我刚刚在4.1.0中对其进行了测试。最终,当您将用户名LDAP属性更改为 sAMAccountName 以及时,它就可以正常工作的 用户名映射器中的 LDAP属性也与 sAMAccountName 相同。
我尝试了一些映射器(尤其是用户名),但是没有运气。
您的问题表明,您已经尝试在用户名映射器中执行某些操作。因此,您绝对处在正确的轨道上。您的版本中存在错误,或者两个字段不正确匹配。
答案 1 :(得分:0)
对我来说,它奏效了。请找到以下过程:
1)在用户联合-> LDAP Provider->中,有一个名为“ UserName LDAP Attribute”的设置。 (如此处ldap provider settings所示)
2)选择“映射器”选项卡并编辑“用户名”映射器,然后更改为以下设置:username mapper settings