WSO2 身份服务器 5.3.0 用户存储:列出用户和登录有效,但声明管理器找不到用户



我已经安装了WSO2 Identity Server 5.3.0,并配置了一个Active Directory作为主要用户存储。 一切正常,直到现在都没有问题。现在它表现得超级奇怪。

我可以轻松地在IS中列出所有用户。我可以编辑他们的个人资料数据。我还可以使用 SAML 从其他应用程序登录。 如果我通过 SAML 与用户一起登录,则该用户已通过身份验证,然后在 IS 中收到以下错误:

ERROR {org.wso2.carbon.identity.application.authentication.framework.handler.claims.impl.DefaultClaimHandler} -  Error occurred while retrieving http://wso2.org/claims/emailaddress claim value for user user@domain.com
org.wso2.carbon.user.core.UserStoreException: UserNotFound: User user@domain.com does not exist in: PRIMARY
WARN {org.wso2.carbon.identity.application.authentication.framework.handler.claims.impl.DefaultClaimHandler} -  Subject claim could not be found amongst unfiltered local claims
DEBUG {org.wso2.carbon.identity.application.authentication.framework.handler.claims.impl.DefaultClaimHandler} -  Returning claims from claim handler = []
DEBUG {org.wso2.carbon.identity.application.authentication.framework.handler.claims.impl.DefaultClaimHandler} -  UNFILTERED_IDP_CLAIM_VALUES map property set to []
DEBUG {org.wso2.carbon.identity.application.authentication.framework.handler.claims.impl.DefaultClaimHandler} -  UNFILTERED_LOCAL_CLAIM_VALUES map property set to []
DEBUG {org.wso2.carbon.identity.application.authentication.framework.handler.claims.impl.DefaultClaimHandler} -  UNFILTERED_SP_CLAIM_VALUES map property set to []
WARN {org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler} -  Subject claim could not be found. Defaulting to Name Identifier.

登录正常进行,但缺少 SAML 响应中需要的所有属性。(一天前这仍然有效)

有谁知道我可以从哪里开始解决这个问题? 我查看了声明映射,找不到任何看起来不对劲的地方。是否可以将声明映射重置为默认值?

我还删除并重新创建了服务提供商,但没有帮助。

我检查了user-mgt.xml(尤其是UserNameSearchFilter),一切似乎都很好(否则它不会显示IS中的所有用户)。

更新:

一些新信息: 所以我使用第二个WSO2 IS来检查问题出在IS还是AD。第二个 IS 在登录期间获取声明没有问题。

所以它必须是与配置相关的问题。

更新 2:

所以我玩了一下日志级别,发现了以下内容:

DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Searching for user user@domain.com
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Searching for user with SearchFilter: (&(objectClass=user)(mail=user@domain.com )) in SearchBase: 
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Name in space for user@domain.com  is null
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  User: user@domain.com  exist: false
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Searching for user user@domain.com
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Searching for user with SearchFilter: (&(objectClass=user)(mail=user@domain.com )) in SearchBase: 
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Name in space for user@domain.com  is null
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  User: user@domain.com  exist: false
ERROR {org.wso2.carbon.identity.application.authentication.framework.handler.claims.impl.DefaultClaimHandler} -  Error occurred while retrieving http://wso2.org/claims/emailaddress claim value for user user@domain.com

搜索过滤器中的尾随空格可能是问题吗?(它从何而来?我在user-mgt.xml中的过滤器没有空间,完全相同的配置在不同的服务器上工作)

特别是因为我打开用户配置文件时它可以工作:

DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Searching for user user@domain.com
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  value after escaping special characters in user@domain.com : user@domain.com
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  User: user@domain.com exist: true
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Searching for user with SearchFilter: (&(objectClass=user)(mail=user@domain.com)) in SearchBase:
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :telephoneNumber
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :role
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :mail
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :givenName
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :mobile
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :profileConfiguration
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :company
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :sn
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :cn
DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  Requesting attribute :co

它也适用于我的第二个测试 IS。但是,在登录期间,测试IS中有一个区别,而不是在我的主IS上完成:

DEBUG {org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager} -  value after escaping special characters in user@domain.com : user@domain.com

如何修复此缺失步骤?

更新3:我现在刚刚发现了类似的问题,但仍然找不到解决方案:向WSO2身份服务器进行身份验证时尾随空格

谢谢! 席

各位 IS 用户,您好,

因此,在向 WSO2 身份服务器进行身份验证时看到尾随空格的报告后,我检查了测试用户保存的密码。

不幸的是,我在保存的登录名中有一个尾随空格。再加上错误,这会导致这种奇怪的行为(特别是如果您在测试服务器上键入登录凭据)。

所以这大约是我的用户错误和大约 25% 的 IS 错误。

我会看看 wso2 jira 中是否已经存在错误问题,否则我将提交错误报告。

更新:归档错误:https://wso2.org/jira/browse/IDENTITY-5864

干杯垫

相关内容

最新更新