【发布时间】:2017-05-20 16:45:20
【问题描述】:
好的,我花了几天时间寻找合适的解决方案,了解如何在使用 SPA 时正确验证用户身份。
- 我有自己的网站。
- 我有自己的 API。
- 我有自己的单页应用程序。
- 我有自己的用户数据库。
目标:我需要通过提供用户名和密码来获取 access_token。
我查看了 OAuth2 Implicit Grant,但它要求用户在成功验证后批准/拒绝该应用程序。它在我的情况下不起作用,因为我拥有应用程序和 API。
我查看了 OAuth2 Password Grant,它并不完美,因为我需要公开 client_id/client_secret。
我之所以关注 OAuth2,是因为 API 最终会公开。
有没有一种标准方法可以做到这一点?我目前的选择:
- 忘记 OAuth2 并在用户 POST 用户名/密码时手动生成 access_token(在这种情况下,我必须在 API 公开时引入 OAuth2)
- 使用 OAuth2 Password Grant 并在服务器上注入 client_id/client_secret,因此只是为了保持客户端应用程序非常简单(同时避免所有那些 dev/staging/prod client_id/client_secret 对)
【问题讨论】:
-
OAuth 适用于您不拥有至少一个需要调用的资源 (API) 并且需要向用户请求权限以在他/她上使用这些资源的情况代表。在我看来,您只需要微服务之间的主体传播。
-
您使用的是特定的 javascript 框架还是其他开发环境?
-
Visual Studio 2017 中的 SPA 模板对此有一个可行的解决方案,也许看看那个?
标签: api authentication oauth oauth-2.0 single-page-application