使用WSO2IS 5.1.0(我相信任何版本都会遇到此问题)我们遇到了传入并发身份验证请求的问题。
在两种情况下(如我们所见),可以发生并发身份验证请求:
首先:当用户尚未通过登录表单的多个帖子进行身份验证时。当用户不够耐心并双击登录按钮(或发送登录提交按钮时,某些用户会这样做),就会发生这种情况。使用自定义登录页面,我们可以控制UI,我们可以阻止用户访问多个帖子(通过在提交时禁用提交按钮)。
第二个(这是我们看到真正问题的地方):当用户已经过身份验证时,接收多个身份验证请求会将用户发送到retry.do页面并显示错误消息。
FINEST|6940/0|Service WSO2IS510|16-10-18 11:05:39|[2016-10-18 11:05:39,295] ERROR {org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator} - Exception in Authentication Framework
FINEST|6940/0|Service WSO2IS510|16-10-18 11:05:39|java.lang.NullPointerException
FINEST|6940/0|Service WSO2IS510|16-10-18 11:05:39| at org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handle(DefaultStepBasedSequenceHandler.java:105)
FINEST|6940/0|Service WSO2IS510|16-10-18 11:05:39| at org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultAuthenticationRequestHandler.handle(DefaultAuthenticationRequestHandler.java:115)
FINEST|6940/0|Service WSO2IS510|16-10-18 11:05:39| at org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator.handle(DefaultRequestCoordinator.java:135)
FINEST|6940/0|Service WSO2IS510|16-10-18 11:05:39| at org.wso2.carbon.identity.application.authentication.framework.servlet.CommonAuthenticationServlet.doPost(CommonAuthenticationServlet.java:53)
FINEST|6940/0|Service WSO2IS510|16-10-18 11:05:39| at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
FINEST|6940/0|Service WSO2IS510|16-10-18 11:05:39| at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
这与my older post有关。
使用HTML5应用程序(使用401结果访问其服务将使用身份验证请求重定向用户)更常见的是并发身份验证请求。在这种情况下,处理多个线程中相同的缓存身份验证上下文将使身份验证上下文进入无效状态。不幸的是 - 服务提供商不在我们的控制之内,我们当时无法强制只发送一个请求。
有没有办法在处理之前同步/锁定身份验证上下文?
答案 0 :(得分:1)
WSO2产品尚不支持并发用户登录限制。这已被提出作为改进[1],并可能包括在未来。