【发布时间】:2016-11-12 01:02:28
【问题描述】:
我正在编写一个玩具应用程序,用于在 nodejs (expressjs) 上练习微服务和身份验证。
我有一个反应客户端、一个身份验证服务和其他服务(到目前为止,它们只是响应“嗨”)。
- 客户端将托管在 CDN 中。
- 身份验证服务侦听端口 5000(例如)
- 其余服务侦听端口 6000-6100。
- 我有一个 redis 数据库来存储会话信息(由 twitter 提供的 oauth 令牌)。
- 存储应用信息的mongodb(与本题无关)。
这个想法是未经身份验证的客户端通过单击 Twitter 按钮 (SSO) 进入身份验证服务。然后 auth 服务获取生成的 twitter 誓言令牌,并将此令牌设置在 redis 存储中。然后其他服务可以访问令牌,因此他们可以通过检查它是否已经存在于 redis 存储中来了解请求是否经过身份验证(如果用户删除其帐户,它也会从 redis 存储中删除) . 一旦通过身份验证,我就会从客户端到服务器来回发送 twitter 令牌。
我发现这种方法非常简单(其他人使用 nginx 代理进行身份验证,但我认为没有理由这样做,除非服务托管在不同的域中,但我不太了解)所以我很担心例如,我缺少一些关于安全性的内容。
问题:
- 这种方法正确吗?
- 分享 twitter 令牌是否安全(我认为是)?
- 这里有没有我没有注意到的安全问题?
【问题讨论】:
标签: node.js session authentication oauth passport.js