Spring 安全和无状态 Restful 服务
Spring Security & Stateless Restful services
我的项目分为微服务。我的前端项目是 AngularJS 在 Spring Boot.
之上
我的服务完全Restful,我想保持这样。
因为我的服务是 Restful 我在前端使用 HTTP Basic 安全性作为身份验证过程。
起初,在最终用户通过登录页面后,一切似乎都很好。
但后来,我意识到由于我的 Restful 风格,我没有保持 HTTP 状态,这意味着在即将到来的对服务器的请求中,我必须继续向服务器发送 HTTP 基本凭据服务器。而且我无法对我想向服务器发出的每个请求进行用户身份验证。
这种 HTTP 无状态样式和维护服务器凭据是否有任何解决方法?
在哪里保存凭据被认为是最好的?
饼干?但这会将状态恢复为 HTTP 请求。
在网上搜索时,我遇到了 Redis and/or Spring 会话,这就是答案吗?
Spring Session
Spring Session 是 Spring 投资组合中一个鲜为人知的伟大项目。它可以轻松地让您的应用程序使用外部 session 存储(例如 Redis)而不是本地化的 session(例如 Tomcat)。这允许您利用负载均衡器在多个服务器之间分配流量而不会丢失应用程序状态(例如,已登录 in/logged 退出)。它还允许您在不破坏用户的情况下重新启动单个服务器 session。
Restful?
是的,您可以使用修改后的 Spring Session 配置,以便更恰当地将其与 Rest 端点一起使用。您将使用 HttpBasic 执行初始身份验证,但您将收到一个授权令牌,您将在后续请求中将其作为 Http Header 代替用户名和密码传递。有关详细信息,请参阅文档的 link
Spring Security OAuth
这是一个复杂得多的设置,但也有一些优势,例如利用外部身份提供商(例如 Google、Facebook)。您还可以促进跨多个应用程序的 SSO。我建议从 Spring Session 开始,因为它对初学者来说更简单。
我的项目分为微服务。我的前端项目是 AngularJS 在 Spring Boot.
之上我的服务完全Restful,我想保持这样。
因为我的服务是 Restful 我在前端使用 HTTP Basic 安全性作为身份验证过程。
起初,在最终用户通过登录页面后,一切似乎都很好。
但后来,我意识到由于我的 Restful 风格,我没有保持 HTTP 状态,这意味着在即将到来的对服务器的请求中,我必须继续向服务器发送 HTTP 基本凭据服务器。而且我无法对我想向服务器发出的每个请求进行用户身份验证。
这种 HTTP 无状态样式和维护服务器凭据是否有任何解决方法?
在哪里保存凭据被认为是最好的?
饼干?但这会将状态恢复为 HTTP 请求。
在网上搜索时,我遇到了 Redis and/or Spring 会话,这就是答案吗?
Spring Session
Spring Session 是 Spring 投资组合中一个鲜为人知的伟大项目。它可以轻松地让您的应用程序使用外部 session 存储(例如 Redis)而不是本地化的 session(例如 Tomcat)。这允许您利用负载均衡器在多个服务器之间分配流量而不会丢失应用程序状态(例如,已登录 in/logged 退出)。它还允许您在不破坏用户的情况下重新启动单个服务器 session。
Restful?
是的,您可以使用修改后的 Spring Session 配置,以便更恰当地将其与 Rest 端点一起使用。您将使用 HttpBasic 执行初始身份验证,但您将收到一个授权令牌,您将在后续请求中将其作为 Http Header 代替用户名和密码传递。有关详细信息,请参阅文档的 link
Spring Security OAuth
这是一个复杂得多的设置,但也有一些优势,例如利用外部身份提供商(例如 Google、Facebook)。您还可以促进跨多个应用程序的 SSO。我建议从 Spring Session 开始,因为它对初学者来说更简单。