【问题标题】:Identity management with multiple spring boot micro services具有多个 Spring Boot 微服务的身份管理
【发布时间】:2015-10-06 18:15:18
【问题描述】:

我有多个用于不同目的的 Spring Boot 应用程序。 例如,移动客户端将其 GPS 坐标发送到一个 Spring Boot 微服务,同时这些移动客户端访问另一个 Spring Boot 微服务来执行其 CRUD 操作。

我遇到了验证客户端的问题。我不想对所有服务进行身份验证。相反,我想通过使用另一个身份管理服务器(例如:Kerberos)来为所有这些微服务生成 SSO 令牌。

或者一个代理,它对所有传入的请求进行身份验证并将它们委托给相关的微服务。

我搜索了几个小时,但即使在一般情况下,我也找不到任何关于保护微服务的可靠信息。

  1. 我采用的设计或架构是否正确?
  2. 这种情况的最佳方法是什么?
  3. 如何实现这个身份服务器/代理谁来进行身份验证?
  4. 是否有任何技术、已知的身份管理服务器可以轻松与 Spring 集成、已知的设计模式?

还有一个问题, 可以在这些服务中的每一个上实现相同的身份验证层吗? (因为我认为这很糟糕,我可能会错)

我想坚持使用 Spring。

如果有人能指引我正确的道路,我们将不胜感激。

【问题讨论】:

  • 您可以将 Spring Security 与基于令牌的身份验证和授权方案一起使用。令牌应该具有强大的加密能力并存储在分布式缓存中,而不是特定的虚拟机中。然后,如果所有应用程序都使用这样的方案,它们可以对客户端进行身份验证,并为针对公共缓存的所有请求传递相同的令牌。在 Spring Security 中使用缓存非常简单,只需要实现一个接口。分发缓存也只是配置更改。所以,这可能是最简单的选择。

标签: spring spring-boot single-sign-on microservices identity-management


【解决方案1】:

您需要的是 OAuth2。

使用向客户端和服务提供令牌并检查这些令牌的集群授权服务器。

【讨论】:

  • 谢谢,我正在转向 OAuth,您的回答很清楚。我以前没有使用过 OAuth。是否有任何开源服务器可以进行授权,或者我必须自己实现一些东西吗?
【解决方案2】:

我会推荐 Cloud Foundry 的 UAA。它是您需要的最佳“用户帐户和身份验证”管理服务器。

除了上述之外,您还可以使用 Spring OAuth2 和 JWT 来保护微服务。

【讨论】:

    猜你喜欢
    • 2017-02-17
    • 2019-08-02
    • 2015-03-22
    • 2019-01-07
    • 2019-01-19
    • 2020-06-16
    • 2019-01-03
    • 1970-01-01
    • 2020-09-01
    相关资源
    最近更新 更多