当前位置: 首页 > 知识库问答 >
问题:

一次登录Spring SAML CRSF

杜良骏
2023-03-14

我使用Spring Saml解决方案来保护在tomcat上运行的rest api。

我使用的是spring-security-saml2-core1.0.2。与Spring security 4.1.1一起发布。释放

我已经创建了一个Onelogin测试连接器/应用程序。如果我试图访问http://localhost:8080/app-name/api/getstate我会正确地重定向到Onelogin并进行身份验证。然后我会重定向到http://localhost:8080/app-name/saml/SSO/alias/defaultAlias.

问题::我得到“无法验证提供的CSRF令牌,因为找不到您的会话。”在重定向之后

这是根据Spring SAML扩展和Spring Security CSRF保护的冲突。

Vladimír Schäfer提供的解决方案建议在SAMLendpoint的securityContext中禁用CSRF。

这是可行的,但由于我对spring security和spring security都是新手,所以我必须回答相关的问题:

>

  • 在这种情况下,对于Spring SAML URL,关闭其余api上的CSRF是否安全/最佳实践?

    如果在Spring安全中启用CSRF,Onelogin是否有办法与Spring Saml一起工作?

  • 共有1个答案

    尉迟边浩
    2023-03-14

    我不是Spring专家,但我想我能解决你的疑问。

    跨站点请求伪造(Cross-Site Request Forgery,CSRF)是一种攻击,它迫使最终用户在其当前已通过身份验证的web应用程序上执行不必要的操作。

    SAML有自己的机制来防止不必要的操作,例如,在endpoint上,需要签署SAML消息来验证它们(只有合法的源才能正确签署SAML消息,因此我们避免模拟/消息修改)。

    基于此,我认为在以下SPendpoint上禁用CSRF保护是正确的:

    • ACS.断言消费者服务
    • SLS.单一注销服务

    在启动SP启动的SSO或SP启动的SLOendpoint上,我认为可以维持CSRF保护。

    与另一个问题相关,我认为独特的方法是在Spring保存一个带有CSRF值的状态,传递一种恢复状态的方法作为RelayState参数。Onelogin将发送回除了SAML响应之外的relayState参数,您将能够恢复您的状态,恢复CSRF并避免CSRF令牌错误。

     类似资料:
    • 我使用的是Spring Security 4.1.1,但我遇到了一个问题:我试图访问URL,应用程序会重定向到登录页面。到现在为止,一直都还不错。 但是,成功登录后,应用程序会再次将我重定向到登录页面,并且不会创建任何会话,因此即使尝试直接访问URL(在URL栏中键入),应用程序也会重定向到登录页面。 有一些URL我必须要求登录才能访问它们。其他的,我可以访问无需身份验证。这些我不需要验证的URL

    • 我正在用一个登录名实现Spring Security SAML。我已经设置了所有的配置文件和元数据。 我能够得到登录工作和注销工作,如果我退出我登录的同一个应用程序.在这种情况下,从SAML IDP我得到LogoutResponse和Spring Security是能够解析和处理它。 http://localhost:8080/web/saml/SingleLogout?SAMLResponse=

    • 我想准备一个与Activiti合作的环境。我遵循张贴在https://activiti.gitbook.io/activiti-7-developers-guide/getting-started/getting-started-activiti-cloud/getting-started-docker-compose . 当我启动应用程序时,我停了下来。我在cmd中键入make modeler,

    • 本文向大家介绍Asp.Net MVC记住用户登录信息下次直接登录功能,包括了Asp.Net MVC记住用户登录信息下次直接登录功能的使用技巧和注意事项,需要的朋友参考一下 有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo可以到百度云和码云下载, 百

    • 我有一个登录表单,在单击时调用以下函数。 然后使用重定向 但我面临的问题是,当我第一次登录时,重定向无法工作。它设置了所有的cookie等等,但是它从来没有将用户重定向到想要的目录。所以我被迫在浏览器搜索栏中输入我想要的路由来重定向自己。 这意味着,一旦我强迫自己进入想要的目录,如果我注销(基本上删除cookies),并尝试再次登录。这一次重定向起作用了。 在我用Ctrl+F5清除所有缓存之前,它

    • 用户登录 调用地址 https://api.bilibili.tv/login 需要 App Key;此API调用权限需要额外申请,具体请联系网站客服。 参数 字段 必选 类型 说明 userid/email true string 帐号名或邮箱 pwd true string 明文密码 captcha true string 验证码 (请访问 https://secure.bilibili.tv