【发布时间】:2015-10-06 18:15:18
【问题描述】:
我有多个用于不同目的的 Spring Boot 应用程序。 例如,移动客户端将其 GPS 坐标发送到一个 Spring Boot 微服务,同时这些移动客户端访问另一个 Spring Boot 微服务来执行其 CRUD 操作。
我遇到了验证客户端的问题。我不想对所有服务进行身份验证。相反,我想通过使用另一个身份管理服务器(例如:Kerberos)来为所有这些微服务生成 SSO 令牌。
或者一个代理,它对所有传入的请求进行身份验证并将它们委托给相关的微服务。
我搜索了几个小时,但即使在一般情况下,我也找不到任何关于保护微服务的可靠信息。
- 我采用的设计或架构是否正确?
- 这种情况的最佳方法是什么?
- 如何实现这个身份服务器/代理谁来进行身份验证?
- 是否有任何技术、已知的身份管理服务器可以轻松与 Spring 集成、已知的设计模式?
还有一个问题, 可以在这些服务中的每一个上实现相同的身份验证层吗? (因为我认为这很糟糕,我可能会错)
我想坚持使用 Spring。
如果有人能指引我正确的道路,我们将不胜感激。
【问题讨论】:
-
您可以将 Spring Security 与基于令牌的身份验证和授权方案一起使用。令牌应该具有强大的加密能力并存储在分布式缓存中,而不是特定的虚拟机中。然后,如果所有应用程序都使用这样的方案,它们可以对客户端进行身份验证,并为针对公共缓存的所有请求传递相同的令牌。在 Spring Security 中使用缓存非常简单,只需要实现一个接口。分发缓存也只是配置更改。所以,这可能是最简单的选择。
标签: spring spring-boot single-sign-on microservices identity-management