我正在研究微服务架构,但我在这方面面临一些挑战。
首先让我向您简要介绍一下架构。
用户登录并获取签名令牌,该令牌将用于调用所有 REST API。
将会有很多 API 服务器,其中 API 使用 Spring 安全性进行保护,并根据用户角色进行授权。
服务必须相互交互才能获取/更新信息。
每个服务都有权通过身份验证服务器验证令牌问题。
问题:-
如果用户登录并使用相同的令牌并将其传递给经过验证的每个服务,则一切正常。因此,在传递令牌时,服务不需要相互信任。
现在的问题是,有些服务需要在不登录的情况下从服务器本身调用。比方说服务器到服务器的调用。服务如何验证和授权来自其他服务的调用。
我读到了有关 Spring 微服务的内容,但 Zuul 也不是这里的救世主,因为每个 API 服务器都嵌入了 Spring Security,而不仅仅是 API 网关。
一种解决方案是每个服务都有自己的具有某些角色的默认用户,用于加入 -> 获取令牌 -> 使用令牌调用其他服务器 api。
您能否给我一些服务器到服务器调用的指针,其中每个服务器都使用 spring security 进行身份验证和授权。
Thanks.
在 OAuth2 中,有一个专用于服务器到服务器授权的流程(客户端凭据授予流程)。调用服务是第二个(资源服务器)的常规客户端,因此它必须获取令牌并使用它。
简而言之,客户端告诉授权服务器他是谁(使用其客户端id/app id),授权服务器给它一个令牌,该令牌可用于查询资源服务器。
我有法语资源here http://www.bubblecode.net/fr/2016/01/22/comprendre-oauth2/#Lrsquoautorisation_serveur_serveur_Client_Credentials_Grant,序列图是英文的,应该会有帮助。您可以轻松找到有关此流程的更多信息。
有关 Spring Security 的具体内容,请参阅spring-security-oauth2 文档 http://projects.spring.io/spring-security-oauth/docs/oauth2.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)