0

我扩展了 AbstractUserStoreManager 类,并在 doAuthenticate() 方法中覆盖了代码来执行自定义身份验证过程。当我使用我的凭据登录时,doAuthenticate 方法正确返回 true。

但是,wso2 身份服务器用户管理控制台仍然抛出登录失败消息。(即正在调用 CarbonAuthenticationUtil.onFailedAdminLogin 方法)。

可能是一个问题,如果没有做工作来表明这个用户是管理员角色。

但是,我在每种方法中都添加了一些日志记录,以查看触发了什么。然而,在触发 doAuthenticate() 方法后,我没有看到任何检查角色被触发的方法。

谁能指出我正确的方向?

以下是以 DEBUG 详细程度运行的日志:


[2013-03-15 15:17:55,669] DEBUG -  getRequestAddressingRequirementParameterValue: got value from MessageContext [MessageContext: logID=cd1ae48ec92e8ccb25cd294c255c695acb01113f991655f8], value: 'null' {org.apache.axis2.addressing.AddressingHelper}
[2013-03-15 15:17:55,669] DEBUG -  getRequestAddressingRequirementParameterValue: value: 'null' {org.apache.axis2.addressing.AddressingHelper}
[2013-03-15 15:17:55,669] DEBUG -  getRequestAddressingRequirementParameterValue: value: 'null' {org.apache.axis2.addressing.AddressingHelper}
[2013-03-15 15:17:55,670] DEBUG -  [MessageContext: logID=dd1ae48ec92e8ccb25cd294c255c695acb01113f991655f8] isReplyRedirected: ReplyTo is null. Returning false {org.apache.axis2.addressing.AddressingHelper}
[2013-03-15 15:17:55,670] DEBUG -  [MessageContext: logID=dd1ae48ec92e8ccb25cd294c255c695acb01113f991655f8] isReplyRedirected: ReplyTo is null. Returning false {org.apache.axis2.addressing.AddressingHelper}
[2013-03-15 15:17:55,670]  INFO -  isAuthenticated?: true {com.dg.rio.proxy.user.store.DGProxyReadOnlyUserStoreManager}
[2013-03-15 15:17:55,670] DEBUG -  Post authenticator is called in IdentityMgtEventListener {org.wso2.carbon.identity.mgt.IdentityMgtEventListener}
[2013-03-15 15:17:55,670] DEBUG -  Post authenticator is called in IdentityMgtEventListener {org.wso2.carbon.identity.mgt.IdentityMgtEventListener}
[2013-03-15 15:17:55,671] DEBUG -  AUTHORIZATION_CACHE Memory cache hit, but element expired {net.sf.ehcache.Cache}
[2013-03-15 15:17:55,672] ERROR -  System error while Authenticating/Authorizing User : null {org.wso2.carbon.core.services.authentication.AuthenticationAdmin}
java.lang.NullPointerException
    at org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager.isUserAuthorized(JDBCAuthorizationManager.java:134)
    at org.wso2.carbon.core.services.authentication.AuthenticationAdmin.login(AuthenticationAdmin.java:107)
4

1 回答 1

1

IS 4.10 的文档刚刚发布(我认为是上周)。我阅读了配置外部 ldap 和 jdbc 存储的部分,它说在领域配置中使用用户名作为管理员(在 user-mgt.xml 中)。

                <AdminUser>
                 <UserName>MYADMINUSER</UserName>

使用任意(后门)密码添加此用户名确实允许管理员用户使用有效密码进行身份验证。IE

如果 doAuthenticate 返回 true,他将进行身份验证。如果为假,他会按预期被拒绝。

似乎有点胡说八道,但很高兴看到它起作用。

于 2013-03-19T17:31:59.153 回答