使用步骤验证器时出现 WSO2IS NullPointerException
WSO2IS NullPointerException when using step authenticator
偶尔(?)WSO2 IS 用户无法通过以下异常进行身份验证。重试时,用户将通过身份验证。任何想法可能是什么原因/解决方案?我们设置了会话缓存。
使用 WSO2 Identity Server 5.0.0.SP1 / SAML 身份验证并将身份验证器设置为高级(单步,多个选项)。我找不到要签出的正确源代码提交(以匹配异常中的行号)
提前谢谢大家
加布里埃尔
TID: [0] [IS] [2016-02-15 13:07:22,914] ERROR
{org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator}
- Exception in Authentication Framework {org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator}
java.lang.NullPointerException at
org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handle(DefaultStepBasedSequenceHandler.java:83)
at
org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultAuthenticationRequestHandler.handle(DefaultAuthenticationRequestHandler.java:121)
at
org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator.handle(DefaultRequestCoordinator.java:94)
at
org.wso2.carbon.identity.application.authentication.framework.servlet.CommonAuthenticationServlet.doPost(CommonAuthenticationServlet.java:54)
at
org.wso2.carbon.identity.application.authentication.framework.servlet.CommonAuthenticationServlet.doGet(CommonAuthenticationServlet.java:44)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:735) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
编辑:
WSO2 IS 5.1.0 也出现此异常
参见 Source code 第 105 行
StepConfig stepConfig = context.getSequenceConfig().getStepMap().get(currentStep);
// if the current step is completed
if (stepConfig.isCompleted()) {
stepConfig.setCompleted(false);
ERROR org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator} - Exception in Authentication Framework
java.lang.NullPointerException
at org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handle(DefaultStepBasedSequenceHandler.java:105)
at org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultAuthenticationRequestHandler.handle(DefaultAuthenticationRequestHandler.java:115)
它看起来像身份验证配置中的 stepConfig 'dissapeared'。设置在单个节点上完成,会话持久化到数据库中。
显然是并发问题。
当多个并发请求发送到 SSO 端点而用户已经通过身份验证时,所有线程都试图处理修改相同身份验证上下文对象(currentStep 计数器)的请求,因此缓存的身份验证上下文进入无效状态.
有效用例是客户端应仅向 SSO 端点发送单个请求,因此处理 UI 的团队必须修复它。但是 - 这只是一个快速解决方案,不能长期防止问题。我们必须真正用 WSO2 来接受它(也许我们自己修复代码):)
g.
偶尔(?)WSO2 IS 用户无法通过以下异常进行身份验证。重试时,用户将通过身份验证。任何想法可能是什么原因/解决方案?我们设置了会话缓存。
使用 WSO2 Identity Server 5.0.0.SP1 / SAML 身份验证并将身份验证器设置为高级(单步,多个选项)。我找不到要签出的正确源代码提交(以匹配异常中的行号)
提前谢谢大家 加布里埃尔
TID: [0] [IS] [2016-02-15 13:07:22,914] ERROR {org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator} - Exception in Authentication Framework {org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator} java.lang.NullPointerException at org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handle(DefaultStepBasedSequenceHandler.java:83) at org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultAuthenticationRequestHandler.handle(DefaultAuthenticationRequestHandler.java:121) at org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator.handle(DefaultRequestCoordinator.java:94) at org.wso2.carbon.identity.application.authentication.framework.servlet.CommonAuthenticationServlet.doPost(CommonAuthenticationServlet.java:54) at org.wso2.carbon.identity.application.authentication.framework.servlet.CommonAuthenticationServlet.doGet(CommonAuthenticationServlet.java:44) at javax.servlet.http.HttpServlet.service(HttpServlet.java:735) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
编辑:
WSO2 IS 5.1.0 也出现此异常
参见 Source code 第 105 行
StepConfig stepConfig = context.getSequenceConfig().getStepMap().get(currentStep);
// if the current step is completed
if (stepConfig.isCompleted()) {
stepConfig.setCompleted(false);
ERROR org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator} - Exception in Authentication Framework
java.lang.NullPointerException
at org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handle(DefaultStepBasedSequenceHandler.java:105)
at org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultAuthenticationRequestHandler.handle(DefaultAuthenticationRequestHandler.java:115)
它看起来像身份验证配置中的 stepConfig 'dissapeared'。设置在单个节点上完成,会话持久化到数据库中。
显然是并发问题。
当多个并发请求发送到 SSO 端点而用户已经通过身份验证时,所有线程都试图处理修改相同身份验证上下文对象(currentStep 计数器)的请求,因此缓存的身份验证上下文进入无效状态.
有效用例是客户端应仅向 SSO 端点发送单个请求,因此处理 UI 的团队必须修复它。但是 - 这只是一个快速解决方案,不能长期防止问题。我们必须真正用 WSO2 来接受它(也许我们自己修复代码):)
g.