使用oauth连接

时间:2015-06-10 10:25:04

标签: php android api authentication oauth

我用PHP开发了一个网站(zend framework 2)。它具有用户身份验证,可访问仅由用户访问的用户特定内容和视图。现在我想创建一个与此功能相同的移动应用程序。所以我创建了一个Web服务来访问所有require方法来访问数据。现在我必须从移动应用程序验证用户身份。因此,用户应该能够在移动设备上使用他的凭据登录一次,并且他应该能够访问他的内容。

我的想法是,在用户通过身份验证后,后续API调用应使用Web服务提供的令牌与Web服务进行通信。我对oAuth有基本的了解。所以我的计划是在我的应用程序中创建一个oAuth服务器,它为我的应用程序提供密钥。应用程序使用secret连接并在验证时获取令牌。 App使用此令牌进行进一步的API调用。

现在我的问题是

  1. 我是否正确使用oAuth或者不是oAuth for。
  2. 有没有比这更好的实施。
  3. 我搜索过类似的暗示,但是当我尝试使用oAuth关键字时,我发现的只是google oauth身份验证。
  4. 使用我们在数据库中拥有的登录凭据从移动应用程序验证用户的替代方法是什么。

3 个答案:

答案 0 :(得分:1)

是的,这是 OAuth 访问令牌的好例子 不过,我会更进一步,建议使用 JWT JSON Web Tokens)作为API密钥。 JSON Web令牌是自我验证,数字签名并包含有关登录用户的属性。这意味着您无需在每个API请求中调用中央存储中的用户数据 有许多用于令牌签名/验证的库http://jwt.io/#libraries
在您的情况下,您只需要其中两个:PHPJava 如果您对JWT感兴趣,可以进一步阅读 https://auth0.com/blog/2014/12/02/using-json-web-tokens-as-api-keys/ http://www.toptal.com/web/cookie-free-authentication-with-json-web-tokens-an-example-in-laravel-and-angularjs

答案 1 :(得分:1)

是的,你在某种程度上走在正确的轨道上,但是让我建议一种现在在行业中使用的方法。

首先阅读问题和答案,以了解应该如何完成的基本想法。

How to implement 'Token Based Authentication' securely for accessing the website's resources(i.e. functions and data) that is developed in PHPFox?

然后阅读this post以掌握关于JWT的想法。

现在,让我们看看如何在应用程序中实现JWT。阅读this post。忽略NodeJS / Angular的东西。将它们视为您的应用程序服务器。试着理解它背后的基本原理。

我已经为您提供了网址,因为我不想在这里重复一下互联网上已有的内容,但我已经为您提供了更好地解决问题的途径。如果您今后需要澄清,请告诉我。

答案 2 :(得分:0)

使用PHP很好,但如果您希望用户登录一次然后保持其会话打开以供将来访问应用程序,我会使用SharedPreferences。您可以根据他/她拥有的凭据为每个用户提供访问不同片段的权限,并且每个用户都可以在他们的应用上获得切割后的数据。

为了帮助您验证应用,this教程非常有用。如果您需要任何进一步的帮助,请告诉我们。)