Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用微服务进行OAuth访问令牌验证_Oauth_Architecture_Microservices - Fatal编程技术网

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

使用微服务进行OAuth访问令牌验证,oauth,architecture,microservices,Oauth,Architecture,Microservices,我目前正在考虑按照微服务架构构建一个应用程序。为了授权用户,我考虑使用OAuth协议。现在的问题是在何处/何时验证访问令牌。 我基本上看到两种可能性: 每个微服务都是独立完成的(这意味着一个可能涉及10个微服务的调用将导致10个令牌验证) 引入一个API网关(我想它无论如何都需要存在),它进行令牌验证并传递用户ID、作用域。。。其他微服务信任并使用(这也意味着API网关和微服务之间必须存在某种身份验证,例如客户端机密!) 正如你可能已经猜到的,我倾向于使用第二种方法。这是有效的吗?你对其中一种方

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

  • 每个微服务都是独立完成的(这意味着一个可能涉及10个微服务的调用将导致10个令牌验证)
  • 引入一个API网关(我想它无论如何都需要存在),它进行令牌验证并传递用户ID、作用域。。。其他微服务信任并使用(这也意味着API网关和微服务之间必须存在某种身份验证,例如客户端机密!)
  • 正如你可能已经猜到的,我倾向于使用第二种方法。这是有效的吗?你对其中一种方法有实际经验吗?或者你能建议另一种方法吗? 我期待着您对此发表评论


    谢谢和问候

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

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