Fra*_*nco 7 authentication session oauth node.js passport.js
我正在编写一个玩具应用程序,用于在nodejs(expressjs)上练习微服务和身份验证.
我有一个反应客户端,一个身份验证服务和其他服务(他们只是回答"嗨"到目前为止).
这个想法是未经身份验证的客户端通过单击Twitter按钮(SSO)进入身份验证服务.然后,auth服务获取生成的twitter誓言令牌,并在redis存储中设置此令牌.然后,其他服务可以访问该令牌,以便通过检查请求是否已经存在于redis存储中来知道它是否已经过身份验证(如果用户删除了其帐户,它也将从redis存储中删除) .经过身份验证后,我会在客户端之间来回发送Twitter令牌.
我发现这种方法非常简单(其他人使用nginx代理进行身份验证,但我认为没有理由,除非服务托管在不同的域中,但我不太了解它)所以我很担心我是例如,缺少关于安全性的东西.
问题:
使用这种方法,您将必须验证所有服务中的令牌,如果您对此感到满意,那么您可能没问题。
Twitter 访问令牌可能有一个过期时间,因此需要使用刷新令牌从身份验证服务获取新的访问令牌:
在我最近的任务中,我编写了一个代理所有令牌的微服务,使用这种方法,我的代理处理从身份验证到角色的所有事务,以及发送过期令牌的 401 和撤销刷新令牌等。我认为这使我能够更好地分离关注点。
重要提示:在上面的刷新令牌场景中,我的代理只会遇到无效/过期的访问令牌的负载,而在您的场景中,可以使用无效令牌访问任何服务...
另一种方法是让 Service-A 和 Service-B 调用 auth 服务来验证令牌,但这会推断服务之间的流量会增加,因为每个带有令牌的 HTTP 请求都必须经过验证。在这种情况下,无效的令牌请求也会到达您的服务 X,从而推断其上有一些负载......
| 归档时间: |
|
| 查看次数: |
3613 次 |
| 最近记录: |