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

使用Spring Boot、OAuth和JWT保护SPA?

陆俊智
2023-03-14

我已经学习了本教程,它展示了如何使用几种场景来保护单页应用程序,从简单到我们自己的授权服务器(将身份验证委托给提供者)。第一个场景使用授权代码Grant将用户登录。

假设我们在本例中用自己的OAuth服务器替换Facebook的OAuth服务器,并将其配置为返回一个JWT令牌。

  • 将@EnableResourceServer批注放在资源服务器上
  • 使用OpenID Connect客户端实现隐式流

因此,一旦这样做,假设每个请求包括JWT令牌作为承载头,POST请求是安全的,还是我们还需要配置CSRF?

共有1个答案

沈枫涟
2023-03-14

这将取决于您的应用程序对安全性的敏感性,但是对于公共客户机(SPA)来说,建议使用隐式流。

教程是基于授权代码流的,如果你要用你的STS替换Facebook,它仍然会使用授权代码流,因为@enableoauth2sso将JWT令牌存储在服务器上,并将cookie发送到浏览器,它还会使用刷新令牌来获取新的JWT令牌。基于API网关模式,通过公共客户端(SPA)实现授权代码流是一个定制流程。

要实现隐式流--不要在服务器端使用@EnableOAuth2SSO,只需公开REST API并使用@EnableResourceServer保护它。并且需要使用oidc-client来实现隐式流链接,请参见https://github.com/identitymodel/oidc-client-js

只有当您将JWT令牌或会话标识符存储在浏览器的cookie中时,才需要CSRF保护。

 类似资料:
  • 如何使用Spring Boot保护REST服务(OAuth)? 我能得到的最接近的是:http://spring.io/guides/gs/securing-web/http://spring.io/guides/gs/authenticating-ldap/

  • 我正在运行spring boot,KafkaListener是我的客户。问题是我们如何从失败的kafka配置中恢复,并避免应用程序在退出代码为0的过程结束时停止。例如,不正确的配置可能是不正确的endpointurl。如果无法访问Kafka服务器,也会出现同样的情况。因此,在任何情况下,KafkaListner进程都不应该杀死服务器。 ontext.java:895应用程序上下文异常:未能启动be

  • 我正在使用JWT令牌在web api 2中实现授权,我对这个领域是新手。我坚持生成AudienceId和AudienceCret的目的,为什么我需要它们?

  • 本文向大家介绍.NET core 3.0如何使用Jwt保护api详解,包括了.NET core 3.0如何使用Jwt保护api详解的使用技巧和注意事项,需要的朋友参考一下 摘要: 本文演示如何向有效用户提供jwt,以及如何在webapi中使用该token通过JwtBearerMiddleware中间件对用户进行身份认证。 认证和授权区别? 首先我们要弄清楚认证(Authentication)和授权

  • 我正在使用Spring Boot 2和Spring Security 5构建REST API服务器。我正在使用基于OAuth2的IDP,它在远程服务器上运行,我能够将OAuth2客户端配置为使用IDP,当我尝试从Web浏览器点击任何url时,它会显示Spring生成的UI。https://imgur.com/3x98x5A.png 我能够完成身份验证流程,并且能够从Web浏览器访问安全资源。 现在