AngularJS应用程序的Oauth 2流程

时间:2015-08-24 02:57:40

标签: angularjs oauth-2.0

假设我有一个REST API和一个在AngularJS中独立的前端。

如何使用Oauth 2登录此用户而不重定向并要求“授权应用程序”等?

基本上我想做的是:

  1. 显示用户输入用户名+密码
  2. 的登录表单
  3. 向API发送请求以进行身份​​验证,如果成功获取令牌
  4. 将用户发送到应用程序视图,并将该令牌用于所有其他所需的API调用,直到它过期
  5. 但在每个Oauth 2流程示例中,我都会看到重定向URL部分具有应用程序的授权,并将用户发送到其他位置。但我的AngularJS应用程序本身就是应用程序。

    我不打算使用Google / Facebook或任何其他提供商。用户数据库和oauth服务器托管在API本身上。

    那么这种情况下的正确流程是什么?

1 个答案:

答案 0 :(得分:2)

使用OAuth,流程要求您通过特定提供商的页面登录。例如,使用SSO(例如,Facebook),您将通过本地Facebook登录进行登录。这样做是出于安全原因(故意没有详细说明,因为我对安全性的影响不够了)。

有一个名为Auth0的图书馆我们已经取得了一些成功。它使用OAuth。基本上,它提供了两种实现:重定向(就像你在谈论的)或“弹出”模式,它基本上处理A中的认证A)后台弹出窗口(在电子邮件/密码认证的情况下)或B)前景中的弹出窗口(例如Facebook或Instagram登录)。

我认为OAuth对于SSO的情况很有用,或者如果使用像Auth0这样的提供商(管理您的用户数据库,因此需要通过 Auth0进行身份验证)。

但是,如果您不想使用像Auth0这样的外部提供商,并且您没有使用SSO,我不明白您为什么要在应用中尝试实施OAuth流程。< / p>

通常只需将JWT存储在您自己的数据库中并与每个用户一起进行身份验证即可。