使用微服务进行OAuth访问令牌验证

时间:2015-09-03 10:38:22

标签: oauth architecture microservices

我目前正在考虑按照微服务架构构建应用程序。要授权用户我正在考虑使用OAuth协议。现在问题是在何时/何时验证访问令牌。 我基本上看到了两种可能性:

  1. 每个微服务都是自己做的(这意味着一个可能涉及10个微服务的调用将导致10个令牌验证)
  2. 介绍一个API网关(无论如何我需要在那里),它进行令牌验证并传递其他微服务信任和使用的用户ID,范围......(这也意味着某种身份验证) API网关和微服务之间必须存在,例如客户端秘密!?)
  3. 正如您可能已经猜到的那样,我倾向于采用第二种方法。这是有效的吗?你有其中一种方法的实际经验吗?或者你建议另一种方法? 我很期待你的意见/评论!

    谢谢和问候!

1 个答案:

答案 0 :(得分:1)

您几乎肯定希望在您的微服务架构中进行公共/私有拆分。公共端应该对令牌进行身份验证,而私有端用于为来自其他API调用的调用提供服务。这样,您每次通话只需进行一次身份验证。

正如您所说,您可以通过创建网关服务来实现此目的,该服务将这些调用分派给私有服务。这是一种非常常见的模式。我们发现使用客户端证书身份验证(通常称为双向SSL)对私有API的网关端进行身份验证很有用。这比共享秘密(可以轻易泄漏)更安全。