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

Spring安全 CSRF CORS

齐招
2023-03-14

问题陈述:我有一些Rest的API,它们使用Spring安全性进行CSRF保护。此外,这些API将通过Angular WEB UI从不同的Origin/domain访问。我不需要Spring Authentication,因为身份验证由Siteminder处理。

方法:我遵循了Dave Syer提供的CSRF保护的链接:登录页面:Angular JS和Spring Security Part II,除了一个问题(如下)之外,它工作得很好。

问题:当我的angular html客户端访问同一源/域上的RESTful API时,该代码工作得非常好;但当我尝试从不同的来源访问相同的API时,会出现错误403-访问禁止-CSRF令牌错误。

到目前为止,我通过扩展您的示例尝试的方法:

>

  • 添加了 CORS 筛选器 - 为 RESTful Web 服务启用跨域请求

    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
    

    上面没有运气。

    如果我需要做任何其他事情来使其工作,请提出建议。

    谢谢,苏曼

  • 共有1个答案

    何向荣
    2023-03-14

    CSRF和CORS不是一回事。您现在可能已经对 CORS 部分进行了排序,但您需要将 CSRF 令牌添加到任何 POST/PUT/DELETE 请求。Spring Security将令牌发送到您引用的博客系列的标题中,Angular从那里获取它(您需要添加几行代码才能使其正常工作)。

     类似资料:
    • 问题内容: 我在我们的应用程序中使用Spring安全性,并希望使用存储在数据库中的更改密码选项的密码来验证用户输入。 密码如下存储在DB中。 在此,用户输入的密码使用上述逻辑进行编码并存储在DB中。现在,我只是想从用户那里获取更改密码的密码。从用户那里获得密码后,我使用上述逻辑进行编码,然后尝试与数据库进行比较。即使我使用相同的逻辑进行编码,编码后的值似乎也有所不同。 我的配置来自: 我不确定比较

    • 客户端需要LDAP和本地JDBC身份验证机制。 它们需要一种对两组用户都通用的授权机制。 应该根据用户的角色限制用户进入某些页面。以及需要应用于每个用户的单独权限(创建、更新、删除)集 那么,我如何实现按页授权,这将由管理员决定谁(哪个角色)可以访问哪个页面? 是否应该在配置中指定每个角色页组合?是否有任何方法可以动态地改变页面和角色,因为角色可能会在以后添加。

    • 当我使用security.basic.enabled=false在具有以下依赖项的Spring Boot项目上禁用安全性时: 为了修复此异常,我必须添加属性-management.security.enabled=false。我的理解是,当执行器在类路径中时,应该将security.basic.enabled=false和management.security.enabled=false设置为禁用

    • 我试图在我的资源服务器上配置Swagger身份验证,以便我可以根据我的授权服务器进行身份验证。 我将资源服务器和授权服务器分开。它们都使用不同的端口在我的本地主机上启动。 端口8083上的资源服务器 每当我试图“授权”时,就会出现CORS问题。 我从另一个网站分叉了一个项目作为我的测试场地。下面是分叉项目。 https://github.com/cbriarnold/oauth2-spring-b

    • 因此,我正在尝试保护我使用Spring mvc和安全构建的Web应用程序。我目前拥有来自正常自定义登录页面的基本用户名和密码,该页面使用自定义身份验证提供程序工作,以提供针对数据库进行验证的填充身份验证对象。我想知道的是如何实现使用TOTP的第二阶段登录?我可以让TOTP发布和验证工作,但不确定如何修改Spring Security以通过在我指定的登录页面以外的页面上提交令牌的表单来接受对授权的更

    • 因此,作为一个初学者,我曾尝试使用spring boot 2.2.11、spring security、thymeleaf和json web令牌创建一个ecommmerce网站,我的问题是,当用户对模板进行身份验证时,即使我在模板中放置了thymeleaf的isAnonyms和IsAuthentificated标记,模板也没有更改。 我有两个问题: 1-/如何告诉所有控制器用户已经登录? 2-/如