oAuth2 Grant应该用于从API中获取的AngularJS安全站点

时间:2014-09-12 12:50:06

标签: angularjs authentication laravel oauth-2.0 jwt

我正在寻找有关此项目的最佳策略的建议。

我正在构建一个SaaS服务,客户(租户)可以使用iPad应用程序或服务网站访问该服务。服务网站将以AngularJS和laravel编写。授权是oAuth 2.登录网站的用户将拥有不同的角色和不同的能力。在未来,我们可能会使用相同的用户帐户扩展服务和应用程序。

我在为服务网站制定良好的身份验证和授权策略时遇到问题。由于该网站将运行AngularJS并将连接到我们自己的服务API,我不确定为用户和AngularJS处理AUTH的最佳方法是什么。据我所知,iPad应用程序可能会使用像#34; Resource Owners Grant"这样的东西,但AngularJS网站和代码呢?它应该使用" Implicit Grant"," JWT"或者是其他东西?当用户登录时,是否应该授予他们授权AngularJS网站上所有页面的TOKEN?如果是这样,我是否会使用"授权码授予"并自动授权请求而不为用户进行某种重定向?

我也在考虑使用" login.php"授权用户并提供令牌的页面。它可以将用户个人资料嵌入" angularjs"页面,如果AngularJS页面没有嵌入的配置文件,它会重定向到登录。但是通过这个解决方案,我仍然在试图找出如何最好地将AngularJS页面安全地连接到API。

我很困惑,因为AngularJS网站或多或少是我们API的接口。但我认为用户不应该通过"请求身份验证"过程,他们应该登录..

感谢您的任何建议或指示...... -John

3 个答案:

答案 0 :(得分:1)

隐含授权类型被许多人(lucadegasperi&#o; oauth2-server-laravel等)视为OAuth2授权类型中最不安全的,因此我建议您将JWT用于您的服务网站。< / p>

要将JWT与Laravel集成,请查看以下库。它工作得非常好,并且也得到了流行的开箱即用的API包Dingo for Laravel(https://github.com/dingo/api)的支持:

对于应用程序,如果应用程序是第一方应用程序,请参阅Florens Morselli提到的OAuth2密码授予。如果是第三方应用,请改用授权码授权。

答案 1 :(得分:0)

对于您的服务网站,您应该使用隐式授权类型。此授权类型针对浏览器中的脚本进行了优化,AngularJS旨在发送API请求(请参阅http和资源模块)。

您的iPad应用可以使用授权码授予类型或资源所有者密码信用授予类型。

但不要忘记OAuth2是授权协议,而不是身份验证协议。如果您想使用OAuth2对用户进行身份验证,我建议您实施OpenID Connect(http://openid.net/connect/)。事实上,身份验证是使用存储在cookie或本地存储中的JWT完成的。

您应该查看以下页面; Google使用相同的协议对用户和授权的API调用进行身份验证:

答案 2 :(得分:0)

如果您正在寻找在AngularJS中使用的OAuth 2.0模块,您可能希望看一下这个模块,我过去使用它并且非常好:http://andreareginato.github.io/oauth-ng/