如何解决Liferay 7.3 LoginPortlet 上不需要的 CSRF 验证
用户使用门户 LoginPortlet 执行登录后,登录不成功,并在日志中打印了一条警告:
User 0 is not allowed to access URL http://localhost:8080/web/guest/login and portlet com_liferay_login_web_portlet_LoginPortlet: User 0 did not provide a valid CSRF token for com.liferay.portlet.SecurityPortletContainerWrapper
此后第二次登录后,登录正常。仅当登录页面打开几分钟并且身份验证令牌无效时才会出现问题。这基本上没问题,但是门户配置 portlet.add.default.resource.check.whitelist
排除了 LoginPortlet。但是这个白名单似乎并没有避免不必要的检查。还有其他地方如何避免对 LoginPortlet 进行 CSRF 检查吗?
解决方法
我无法重现此问题,我使用此服务器进行测试:
Liferay 社区版门户 7.3.5 CE GA6
这是我的步骤,请让我知道我应该更改什么才能遇到问题:
- 我将此 zip 文件解压缩到我的 ubuntu linux pc:
liferay-ce-portal-tomcat-7.3.5-ga6-20200930172312275.tar.gz
- 启动服务器并完成第一次设置
- 我重新启动了服务器并在 Opera 浏览器中访问了 localhost:8080
- 等了 7 分钟
- 我点击了右上角的“登录”
- 又等了 5 分钟
- 我输入了我的凭据
结果:
我可以登录成功,CSRF没有错误
几个建议:
A. 在以下位置搜索 CSRF:
https://github.com/liferay/liferay-portal/blob/master/portal-impl/src/portal.properties
看看你能不能找到能解决你问题的房产
这些属性可以是:
auth.token.impl=com.liferay.portal.security.auth.SessionAuthToken
auth.token.check.enabled=false
auth.token.ignore.origins
B. 也许你可以尝试在你的 portal-ext.properties 中设置这样的东西:
portlet.add.default.resource.check.whitelist.actions=/login/login
C. 你可以在 Liferay Jira 中搜索,例如这张票讲了类似的事情:
https://issues.liferay.com/browse/LPS-129976
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。