Spring微服务,无状态会话,角度和静态文件服务

时间:2016-10-04 12:56:13

标签: angularjs spring-security spring-boot spring-cloud microservices

我正在设计大型应用程序的后端,它被分成微服务。我正在使用 Spring Cloud 及其工具: Eureka Zuul 等。我已经实施了 OAuth2 授权服务器支持四种授权类型。它没有问题。

然后我被要求以这样的方式提供 html文件,如果未经授权,后端必须重定向到登录页面并强烈建议我不使用会话 。我认为没有会话春天真的不知道发生了什么,最后它必须有令牌才能决定构建安全上下文

我开始研究这个问题。我发现来自Spring Security and Angular JS tutorial的示例显示路由和重定向是在 ui-route 的帮助下在 angular 内完成的。我在github中浏览了几个项目,他们也使用angular进行重定向。

是否有可能在完全无状态会话中使用后端重定向?(这听起来很愚蠢,但不能用其他方式表达。我想把这个答案给我的同事说明是可能的)。如果可能的话,有没有例子?

1 个答案:

答案 0 :(得分:0)

如果您使用OAuth2进行内部安全,我建议使用oauth来访问控制所有服务,将令牌的存在视为会话。

考虑您在4种授权类型之一中生成了一些访问令牌。您现在可以通过在ResourceServerConfigurerAdapter HTTP标头中传递该标记,或者像Authorization: Bearer <token>这样的get参数来访问任何/service/endpoint?access_token=<token>安全的Spring云资源。

如果您的令牌与用户相关(您可以授权没有用户的客户端!),您可以通过从securityContext获取OAuth2Authentication来访问其详细信息。

此外,如果您的访问令牌是JWT(默认情况下在Spring云安全性中受支持),您既不必在授权服务器上提供真正的令牌存储,也不必在auth服务器上从资源服务器请求用户端点获取用户信息,因为它是在JWT内部发布的。

有了这个,关于你的“会话”(及其状态)的所有内容都存储在访问令牌中,你可以轻松地传递它,并且可以在没有复制混乱的情况下进行缩放。

我不认为你的安全性比这更无国籍;)