wso2身份服务器 - 扩展AbstractUserStoreManager类和doAuthenticate()方法

时间:2013-03-15 18:37:07

标签: wso2

我扩展了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)

1 个答案:

答案 0 :(得分:1)

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

                <AdminUser>
                 <UserName>MYADMINUSER</UserName>

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

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

看起来有点闷闷不乐,但很高兴看到它有效。