Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 用弹簧靴、OAuth和JWT保护SPA?_Spring Mvc_Spring Security_Oauth_Spring Cloud_Netflix Zuul - Fatal编程技术网

Spring mvc 用弹簧靴、OAuth和JWT保护SPA?

Spring mvc 用弹簧靴、OAuth和JWT保护SPA?,spring-mvc,spring-security,oauth,spring-cloud,netflix-zuul,Spring Mvc,Spring Security,Oauth,Spring Cloud,Netflix Zuul,我已经介绍了如何使用几个场景保护单页应用程序,从简单到我们自己的授权服务器,授权给提供者。第一个场景使用来登录用户 假设我们用自己的OAuth服务器替换Facebook的OAuth服务器,并将其配置为返回JWT令牌 如果SPA希望使用JWT令牌来保护通过边缘服务器的请求的安全,那么SPA应该使用哪个OAuth流来实现资源服务器之间的负载平衡 另外,如果我们想使用JWT令牌来替换spring中的默认JSESSION和CSRF支持,那么应该如何配置spring引导/spring安全性?IIUC JW

我已经介绍了如何使用几个场景保护单页应用程序,从简单到我们自己的授权服务器,授权给提供者。第一个场景使用来登录用户

假设我们用自己的OAuth服务器替换Facebook的OAuth服务器,并将其配置为返回JWT令牌

如果SPA希望使用JWT令牌来保护通过边缘服务器的请求的安全,那么SPA应该使用哪个OAuth流来实现资源服务器之间的负载平衡

另外,如果我们想使用JWT令牌来替换spring中的默认JSESSION和CSRF支持,那么应该如何配置spring引导/spring安全性?IIUC JWT令牌可以用作这两个功能的替代品

更新 根据Manish的回答,假设我们使用OAuth 2隐式流,我们:

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

因此,一旦完成此操作,请求后的安全性将得到保证,假设每个请求都包含JWT令牌作为承载头,或者我们还需要配置CSRF吗?

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

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

要实现隐式流-不要在服务器端使用@EnableOAuth2Sso,只需公开RESTAPI并使用@EnableResourceServer保护它。您需要使用oidc客户端来实现这里的隐式流链接


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

如果我们从授权代码流移动到隐式,以便客户端管理令牌,那么我们如何自定义spring安全配置,以便JWT令牌标识用户会话(不在服务器端创建会话),同时执行CSRF?不要在服务器端使用EnableOAuth2Sso,只需公开RESTAPI并使用@EnableResourceServer保护它。您需要使用oidc客户端来实现隐式流链接,这里感谢OpenID连接技巧-现在查看-我更新了我的问题-是否仍需要打开CSRF保护?只有当您将JWT令牌或会话标识符存储在浏览器的cookie中时,才需要CSRF。