2015-04-04 127 views
0

我正在用Laravel后端和AngularJS前端构建一个应用程序。后端也可以作为Oauth2提供者。Laravel,AngularJS Oauth2 - 从客户端登录?

我的问题是,是否有一种简单的方法让用户使用用户名和密码登录客户端(AngularJS应用程序),还是必须将它们重定向到他们可以登录的API?我觉得这很不自然。我可以使用密码授权,但我听说这不安全。

回答

0

这是一件相当棘手的事情。 问题是,即使使用基于规范的密码授予,您也需要client_secret。但是在AngularJS应用程序中使用它并不是非常聪明的事情(不要这样做!)。所以解决方法是使用没有client_secret(只是client_id)的密码授予,并向oauth服务器请求令牌。

但是还有另一个问题。令牌有一些TTL。而且你有不应该暴露的refresh_token。

看看这篇博客写这正是这一点: Oauth2 with angular the right way

+0

感谢您的答复。关于client_secret,我仍然可以使用它,只是允许client_id和client_secret只能从一个特定的IP地址使用,这样没关系,对吧? – marekpw 2015-04-04 23:05:54

+0

不行。仅当您的应用程序仅从1个IP运行时。我怀疑你的用户都只有1个IP地址。您必须假设JS请求将拥有客户端IP。 – Bostjan 2015-04-05 18:37:25