最近我一直在阅读关于微服务的文章,特别是有关AuthN和AuthZ方面的内容。总的来说,这些都很有道理,我也能够理解它们的工作原理。
对于我所涉及的部分,我正在使用委托授权 - 所以我将从客户端传递令牌到服务,并将相同的令牌从一个服务传递到另一个服务。我还在OAuth2服务上有一个端点,可以接受一个令牌并返回令牌的详细信息 - 用户ID,有效期的开始和结束时间,令牌有效的范围等。
我遇到的问题是 - 为了正确发放令牌,需要与用户服务进行一些通信,以确保令牌所代表的用户是有效的。而要验证令牌,需要与用户服务进行一些通信,以确保该用户仍然有效。但是,为了安全地与用户服务通信以获取有关用户的详细信息,需要一个令牌来授权访问。
我假设有一些标准做法来解决OAuth2和用户服务之间的这种循环依赖性,但我没有看到任何提到它的内容。这是常见的问题吗?或者我漏掉了什么显而易见的东西?
(请注意 - 目前我只实现了客户端证书授予和资源所有者密码证书授予,因为我只是在玩耍看看它们如何工作,并且使用cURL更容易调用。但我不知道这是否有任何区别)
对于我所涉及的部分,我正在使用委托授权 - 所以我将从客户端传递令牌到服务,并将相同的令牌从一个服务传递到另一个服务。我还在OAuth2服务上有一个端点,可以接受一个令牌并返回令牌的详细信息 - 用户ID,有效期的开始和结束时间,令牌有效的范围等。
我遇到的问题是 - 为了正确发放令牌,需要与用户服务进行一些通信,以确保令牌所代表的用户是有效的。而要验证令牌,需要与用户服务进行一些通信,以确保该用户仍然有效。但是,为了安全地与用户服务通信以获取有关用户的详细信息,需要一个令牌来授权访问。
我假设有一些标准做法来解决OAuth2和用户服务之间的这种循环依赖性,但我没有看到任何提到它的内容。这是常见的问题吗?或者我漏掉了什么显而易见的东西?
(请注意 - 目前我只实现了客户端证书授予和资源所有者密码证书授予,因为我只是在玩耍看看它们如何工作,并且使用cURL更容易调用。但我不知道这是否有任何区别)