我将我们的事件目录连接到 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 属性作为用户名?
最佳答案
我刚刚在 4.1.0.Final 中对其进行了测试,当您将用户名 LDAP 属性更改为 sAMAccountName 时,它可以工作。以及 这
用户名映射器中的 LDAP 属性也指向 sAMAccountName。
I tried some mappers (especially username) but with no luck.
您的问题表明,您已经尝试在用户名映射器中执行某些操作。所以你肯定走在正确的轨道上。您的版本中存在错误,或者两个字段不正确匹配。
关于ldap - 使用来自 ldap 的 sAMAcountName 作为用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50168751/