微服务到微服务认证

信息安全 验证 oauth 授权
2021-08-12 14:09:34

我们正在计划一个新的架构,它将利用许多不同的微服务的后端,这些微服务需要相互通信,以及来自不属于服务的系统的现场请求。在后面的部分我不是在谈论外部客户,我只是在谈论我们网络内部的系统,但这不是这个微服务架构的一部分。

为那些相互交谈的服务处理身份验证/授权的最佳方法是什么?我通常将 Oauth 视为微服务的解决方案,但这往往是在谈论使用该服务的外部客户时。微服务之间的对话也是如此吗?

2个回答

OAuth 2客户端凭据授予旨在用于服务之间的通信。客户端凭据授予的身份验证通常涉及传递共享密钥,而不是登录名/密码。共享密钥用于满足“机密客户端”对客户端凭据授予的 RFC 要求。

如果您还没有考虑到身份验证服务器,我建议您看一下Keycloak,至少是为了证明概念 - 它是 RedHat 的开源产品。它利用 Open ID Connect (OIDC),它是 OAuth 2 的扩展(添加了一个 ID 层)。有关详细信息,请参阅Keycloak关于服务帐户的服务器管理文档

我一直在处理一个类似的案例。我按照RFC-6749实现了 OAuth2

由于我想拥有一个授权微服务,这个微服务将只处理与身份验证相关的操作,并适用于网络外部和内部。

此服务中的 API 足够通用,可以处理 OAuth2 所需的所有内容。我建议您遵循RFC-6749的“1.2. 协议流程”部分中的流程,这应该可以帮助您以这样的方式设计您的服务,即每个服务的职责都是独一无二的,这是您真正想要实现的目标使用微服务。