如何在微服务及其授权服务器之间授权OAuth2机器到机器令牌?

时间:2017-10-03 18:07:21

标签: oauth-2.0

我有一个OAuth2服务器,它可以根据我的客户端ID&给我一个访问令牌。秘密。

我有一个微服务,其他服务器可以执行与其工作相应的操作。

但是,我需要授权令牌以确保它具有执行此操作的权限。

服务器是否通常将访问令牌转发到auth服务器并获得包含范围等详细信息的响应?等

1 个答案:

答案 0 :(得分:0)

是和否。

对于入口点,您肯定需要通过询问oauth2提供程序来检查访问令牌的范围,但是您可能不希望每当它需要进行范围检查时,每次跟随代码调用提供程序时都会这样做。

在Spring框架中,该授权信息存储在SecurityContext中,同一VM中的任何代码都可以通过调用SecurityContextHolder.getContext()。getAuthentication()来访问它。您可以使用您正在使用的语言和平台实现类似的功能,以便其他人可以通过线程安全的方式共享授权信息。

然而,在微服务世界中,每个微服务都可能有或没有客户端使用的范围。例如,假设有客户端A,调用微服务B的C方法,B的C调用另一个微服务的H的I方法。

取决于方法B.c()和H.i()所需的范围,即使您的代码可以将OAuth2范围传播到以下微服务,客户端A的调用最终可能会导致范围异常不足并失败。 如果你很幸运,那么客户的电话会成功。

我遇到了同样的问题,并且在微服务世界中没有任何关于如何处理OAuth2范围的明确的银弹或最佳实践。我觉得这完全取决于您的服务拓扑结构以及设计方式。

相关问题