WSO2 Identity Server登录返回403

时间:2018-12-21 22:05:17

标签: wso2 wso2is

我正在尝试登录我的WSO2管理控制台。它已容器化并托管在AWS EC2实例中。我可以导航到控制台登录页面,但是当我尝试登录时,我收到一条403 Forbidden消息。

可以导航到登录页面

enter image description here

禁止的错误

enter image description here

我知道此问题的原因是我的登录页面未发布X-CSRF-Token

在“不良”请求中发布的表单数据示例:

enter image description here

我的WSO2实例的控制台显示如下错误:

WARN {org.owasp.csrfguard.log.JavaLogger} - potential cross-site request forgery (CSRF) attack thwarted (user:<anonymous>, ip:IP_ADDRESS, method:POST, uri:/carbon/admin/login_action.jsp, error:required token is missing from the request)

在本地WSO2实例中以“良好”请求发布的表单数据示例:

enter image description here

我尝试过的事情:

我尝试按照这篇文章的建议“关闭”压缩功能:wso2 api manger carbon page gives 403 Forbidden

我没有使用标有错误的版本的JDK 1.8.0_151。

如果我禁用csrfguard中的Owasp.CsrfGuard.Carbon.properties,则可以解决此问题,但这是安全隐患。

我启用了粘性会话

关于为什么要登录到login_action.jsp页面上的任何想法都会返回403?

编辑

我没有在帖子中提到我正在使用AWS负载均衡器使用TLS终止。我几乎可以肯定,我的问题与此有关。控制台输出中的这一行详细说明了我的错误:

Referer domain https:LOAD_BALANCER_URL/carbon/admin/login.jsp does not match request domain: http://LOAD_BALANCER_URL/carbon/admin/js/csrfPrevention.js

您可以看到引荐来源正在使用https,但是请求正在使用http。我相信我希望请求域为https,但是我不确定该怎么做。我认为第一页正在使用login.jsp调用https,而login.jsp页面正在调用csrfPrevention.js页面,但是将协议更改为http。 / p>

3 个答案:

答案 0 :(得分:0)

请参考OS and JDK incompatibilities矩阵,并确保您没有使用这些OS JDK对之一。

答案 1 :(得分:0)

您的Identity Server前面是否装有负载均衡器?如果是这样,请验证您是否在LB中启用了粘性会话。您可以在指南-docs.wso2.com/display/CLUSTER44x/Configuring+NGINX

中找到示例NGINX的配置。

答案 2 :(得分:0)

将Java JDK的版本降低到1.8.0_144。如果不起作用,请转到此位置 wso2Servers / wso2is-5.5.0 / repository / conf / security。 文件名为Owasp.CsrfGuard.Carbon.properties。

在该文件中,有一行 org.owasp.csrfguard.JavascriptServlet.refererMatchDomain = true

将此设置为 org.owasp.csrfguard.JavascriptServlet.refererMatchDomain = false

这对我有用。