Регистрация Keycloak - значение настраиваемого атрибута пользователя подобрано неправильно - PullRequest
0 голосов
/ 06 августа 2020

Я оцениваю 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)

1 Ответ

0 голосов
/ 07 августа 2020

Я не уверен, как это было исправлено, но я удалил свой картограф и воссоздал его, и теперь он работает. Единственное различие, которое я вижу, заключается в том, что имя нового преобразователя написано в нижнем регистре, а у старого - в верхнем регистре. Я не понимаю, почему это должно иметь значение ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...