在分布式服务之间共享OAuth凭据

时间:2013-04-16 06:06:43

标签: oauth

我们的OAuth服务器将与处理实际受保护资源的服务器分开,实质上位于几个不同系统的中间,每个系统都拥有受保护的资源。

例如,登录页面将位于其中一个系统中。

当一个系统中经过身份验证的用户转到另一个系统时,该过程应该是什么?由于它经过身份验证,它应该通过,但OAuth在这种情况下做了什么,并要求它?

谢谢

1 个答案:

答案 0 :(得分:1)

OAuth没有明确说明这种情况。但从API设计的角度来看,我会:

  • 拥有一个API端点,其中包含路径中指定的不同服务。例如http://api.example.com/service1http://api.example.com/service2等。
  • 让一个端点处理OAuth并在后台查询单独的服务。

如果你想拥有透明的“独立系统”,例如http://service1.example.comhttp://service2.example.com。但请确保有一个域来处理整个OAuth流,并且每个API端点都能够处理OAuth请求,并且可以访问必要的用户和令牌数据库来验证请求。

举个例子,您可以:

  1. http://service1.example.com收到OAuth请求。
  2. 如果service1有权访问用户和令牌数据库,则可以立即验证请求。
  3. 或者,您可以将请求转发到OAuth服务进行验证。
  4. 继续提供回复
  5. 或者我的替代方案(我认为更好):

    1. 拥有一个处理OAuth的API端点
    2. 验证后在后台调用不同的服务。