使用来自 ldap 的 sAMAcountName 作为用户名
Use sAMAcountName from ldap as username
我将我们的活动目录连接到 keycloak (4.0.0.Beta1) 并导入了用户 - 这工作正常。
但用户名要从sAMAccountName
填写。所以我将 Username LDAP attribute
更改为那个。
但是在单击 Synchronize all users
之后,我在控制台中收到此错误 window:
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.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 中对其进行了测试,当您将 Username LDAP 属性 更改为 sAMAccountName[=21= 时它可以正常工作] 另外
LDAP Attribute 在 username 映射器中也映射到 sAMAccountName.
I tried some mappers (especially username) but with no luck.
你的问题表明你已经尝试在用户名映射器中做一些事情。所以你绝对是在正确的轨道上。要么是你的版本有问题,要么是两个字段没有正确匹配。
对我来说,它奏效了。请找到以下流程:
1) 在 User Federation -> LDAP Provider -> 中有一个名为 "UserName LDAP Attribute" 的设置。 (如图ldap provider settings)
2) Select 映射器选项卡并编辑 "username" 映射器并更改为以下设置:username mapper settings
我将我们的活动目录连接到 keycloak (4.0.0.Beta1) 并导入了用户 - 这工作正常。
但用户名要从sAMAccountName
填写。所以我将 Username LDAP attribute
更改为那个。
但是在单击 Synchronize all users
之后,我在控制台中收到此错误 window:
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.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 中对其进行了测试,当您将 Username LDAP 属性 更改为 sAMAccountName[=21= 时它可以正常工作] 另外 LDAP Attribute 在 username 映射器中也映射到 sAMAccountName.
I tried some mappers (especially username) but with no luck.
你的问题表明你已经尝试在用户名映射器中做一些事情。所以你绝对是在正确的轨道上。要么是你的版本有问题,要么是两个字段没有正确匹配。
对我来说,它奏效了。请找到以下流程:
1) 在 User Federation -> LDAP Provider -> 中有一个名为 "UserName LDAP Attribute" 的设置。 (如图ldap provider settings)
2) Select 映射器选项卡并编辑 "username" 映射器并更改为以下设置:username mapper settings