【问题标题】:Spring Security & Stateless Restful servicesSpring Security 和无状态的 Restful 服务
【发布时间】:2017-04-05 03:01:05
【问题描述】:

我的项目分为微服务。我的前端项目是基于 Spring Boot 的 AngularJS。

我的服务完全是 Restful,我想保持这种状态。

因为我的服务是 Restful,所以我在前端使用 HTTP Basic 安全性作为身份验证过程。

在最终用户通过登录页面后,起初一切似乎都很好。

但后来,我意识到由于我的 Restful 风格,我不维护 HTTP 状态,这意味着在即将向服务器发出的请求中,我必须继续向服务器发送 HTTP Basic 凭据。而且我无法验证我想向服务器发出的每个请求的用户身份。

对于这种 HTTP 无状态样式和维护服务器凭据是否有任何解决方法?

在哪里保存凭据最好?

饼干?但这会将状态带回 HTTP 请求。

在我的在线搜索中,我遇到了 Redis 和/或 Spring 会话,这就是答案吗?

【问题讨论】:

    标签: spring spring-security spring-boot redis spring-session


    【解决方案1】:

    Spring Session

    Spring Session 是 Spring 产品组合中一个伟大的、鲜为人知的项目。它可以轻松地使您的应用程序使用外部会话存储(例如 Redis)而不是本地化会话(例如 Tomcat)。这允许您利用负载均衡器在多个服务器之间分配流量而不会丢失应用程序状态(例如登录/注销)。它还允许您在不破坏用户会话的情况下重新启动单个服务器。

    Restful?

    是的,您可以使用修改后的 Spring Session 配置来更恰当地将其与 Rest 端点一起使用。您将使用 HttpBasic 执行初始身份验证,但您将收到一个授权令牌,您将在后续请求中将其作为 Http Header 代替用户名和密码传递。有关详细信息,请参阅文档链接

    Spring Security OAuth

    这是一个复杂得多的设置,但有一些优势,例如利用外部身份提供者(例如 Google、Facebook)。您还可以促进跨多个应用程序的 SSO。我建议从 Spring Session 开始,因为它对初学者来说要简单得多。

    【讨论】:

    猜你喜欢
    • 2018-08-05
    • 2013-10-18
    • 2012-11-06
    • 2014-07-31
    • 2016-10-01
    • 2015-04-29
    • 2011-07-19
    • 2012-05-19
    • 1970-01-01
    相关资源
    最近更新 更多