微服务中的认证和授权

时间:2015-10-14 07:13:53

标签: authentication oauth-2.0 authorization microservices

我最近在微服务上读了很多,尤其是AuthN和AuthZ。在大多数情况下,这一切都很有意义,我可以看到这一切是如何运作的。

对于我正在玩的东西,我会使用委托授权 - 所以我要从客户端到服务传递令牌,然后将相同的令牌从服务传递到服务。我还在OAuth2服务上有一个端点,它将接受令牌并返回令牌的详细信息 - 用户ID,有效期的开始和结束,令牌有效的范围等。

我遇到的问题是 - 为了正确发布令牌,需要与用户服务进行一些通信,以确保令牌所针对的用户实际上是有效的。并且为了验证令牌,需要与用户服务进行一些通信以确保用户仍然有效。然而,为了安全地与用户服务通信以获取有关用户的详细信息,需要一个允许此访问权限的令牌。

我假设有一些关于如何解决OAuth2和用户服务之间的循环依赖关系的标准做法,但我根本没有看到任何提及它。这是个常见的问题吗?或者我错过了一些明显的东西?

(注意 - 现在我只实现客户端凭据授权和资源所有者密码凭据授权,因为我只是在玩,看看它是如何工作的,并且它们更容易调用cURL。虽然我不知道这会有什么不同。

1 个答案:

答案 0 :(得分:2)

是的,这有点鸡和鸡蛋的问题。不确定您对授权服务器有多少控制权,但解决此问题的一种方法是使用client certificates保护对用户信息服务的调用。

另一种方法是将用户信息服务和授权服务器合并为一个服务,并且无需一起完成呼叫。