Keycloak注册-自定义用户属性值未正确获取

时间:2020-08-06 18:39:56

标签: keycloak

我正在评估KeyCloak,并尝试将其配置为SalesForce客户端的SAML IDP。 SAML流程运行正常,但是新用户注册遇到了问题。 KeyCloak由用户联合LDAP(AD LDS)支持。 我有一个自定义字段映射到LDAP中的cn字段,并在我的自定义主题中更新了register.ftl。我还添加了一个映射器,该映射器将此自定义字段映射到LDAP属性。

当我尝试注册用户时出现错误,并且自定义属性的值似乎未正确获取。 当我在网上搜索时找不到任何有用的信息,这使我认为在我未发现的地方可能存在一个愚蠢的错误。

映射

  • 名称:MRN
  • 映射器类型:user-attribute-ldap-mapper
  • 用户模型属性:mrn
  • LDAP属性:cn
  • 只读:关闭
  • 在LDAP中是必需的:ON
  • 是二进制属性:OFF

联盟提供商设置:

  • 用户名LDAP属性:userPrincipalName
  • RDN LDAP属性: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>           

这是我尝试注册新用户时遇到的错误(我在MRN字段中输入了123456):

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 :(得分:0)

我不确定该如何解决,但是我删除了我的映射器并重新创建了它,现在它可以正常工作了。我可以看到的唯一区别是,新的映射器的名称为小写,而旧的映射器的名称全部为大写。我不明白为什么这很重要。