Я оцениваю KeyCloak и пытаюсь настроить его как SAML IDP для клиента SalesForce. Поток SAML работает нормально, однако у меня возникла проблема с регистрацией нового пользователя. KeyCloak поддерживается LDAP федерации пользователей (AD LDS). У меня есть настраиваемое поле, сопоставленное с полем cn в LDAP, и я обновил register.ftl в своей настраиваемой теме. Я также добавил средство сопоставления, которое сопоставляет это настраиваемое поле с атрибутом LDAP.
Я получаю сообщение об ошибке, когда пытаюсь зарегистрировать пользователя, и похоже, что значение настраиваемого атрибута не подбирается правильно. Я не могу найти ничего полезного, когда ищу в Интернете, что заставляет меня думать, что, вероятно, где-то есть глупая ошибка, которую я не заметил.
Отображение :
- Имя: MRN
- Тип сопоставителя: user-attribute-ldap-mapper
- Атрибут модели пользователя: mrn
- Атрибут LDAP: cn
- Только чтение : OFF
- Обязательно в LDAP: ON
- Является двоичным атрибутом: OFF
Настройки провайдера федерации:
- Атрибут LDAP имени пользователя: userPrincipalName
- Атрибут LDAP RDN: cn
- Атрибут UUID LDAP: mail
Шаблон :
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('mrn',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="mrn" class="${properties.kcLabelClass!}">MRN</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="user.attributes.mrn" class="${properties.kcInputClass!}" name="user.attributes.mrn" value="${(register.formData['user.attributes.mrn']!'')}" />
</div>
</div>
Это ошибка, которую я получаю, когда пытаюсь зарегистрировать нового пользователя (я ввел 123456 в поле MRN):
14:08:43,514 WARN [org.keycloak.services] (default task-1) KC-SERVICES0013: Failed authentication: org.keycloak.models.ModelException: Could not retrieve identifier for entry [cn=\ ,OU=Emp,DC=MyPortal,DC=TEST,DC=COM].
at org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.getEntryIdentifier(LDAPIdentityStore.java:546)
at org.keycloak.storage.ldap.idm.store.ldap.LDAPIdentityStore.add(LDAPIdentityStore.java:99)
at org.keycloak.storage.ldap.LDAPUtils.addUserToLDAP(LDAPUtils.java:78)