将angularjs webapp连接到REST API(PHP)

问题描述 投票:4回答:4

我有一个用PHP编写的REST API( Slim框架 ),我的API包含一些用于管理私有数据的管理路由。 我已经实现了oAuth2.0授权( 这个php实现 )。

我喜欢使用AngularJS来创建管理Web应用程序,以便用户可以管理自己的数据。

我现在正在使用用户名密码流,但我知道这不安全,因为我的webapp暴露了client_id和client_secret。

我还研究了隐式授权(为公共客户设计),但它说它应该是只读目的。

我还想使用此API为移动应用程序提供数据。 用户无需为此登录,但数据不公开。

哪个oauth授权适用于此场景/设置?

php angularjs rest oauth-2.0 authorization
4个回答
3
投票

我知道我将Python发布到PHP问题但不是代码。 该示例( http://python-eve.org/authentication.html#auth )详细说明了哪些auth方法可用于良好的REST API,它可能对您的应用程序有用。


3
投票

查看Resource Owner Password Credentials Grant 。 这是您提供的第二个链接中的第4个项目符号点。 password (user credentials)

http://tools.ietf.org/html/rfc6749#section-4.3

简单的说:

  1. 用户发送他们的loginpassword
  2. 服务器授予用户access_token (相当于旧的cookie会话ID)
  3. 用户发送access_token以及其余的请求

此外,如果你想让移动设备访问同时保持数据私密,我建议生成链接到移动mac地址的“免费”帐户。 然后让他们通过上面说的身份验证,他们的mac地址作为登录/密码为空。 这样,您可以使用每个设备的throttle / ban / upgrade / etc为移动设备实现相同的用户逻辑。


1
投票

如果您对保留客户端凭据或授权代码的隐式或用户名密码不满意。

客户端凭据在这种情况下不适用,因为无法在浏览器上运行的javascript应用程序中保护凭据(如果您正在谈论证书,甚至可能无法使用客户端凭据)。

因此,授权码是您唯一的选择。

但是,您无法在授权代码流中保护客户端密钥。

Implicit实际上是您浏览器应用程序的唯一OAuth2选项。 OAuth威胁模型中有一节讨论潜在问题和缓解措施。 http://tools.ietf.org/html/rfc6819#section-4.4.2

以下是关于隐性赠款的安全含义的另一个问题。 Oauth 2.0 Implicit Grant的安全性如何?


1
投票

由于堆栈溢出是愚蠢的我不能评论,因为我不经常这个网站。 然而,在我提供解决方案之前,我想知道你有什么情况需要用户不登录才能更新数据?

© www.soinside.com 2019 - 2024. All rights reserved.