我用PHP开发了一个网站(zend framework 2) . 它具有用户身份验证,可访问仅由用户访问的用户特定内容和视图 . 现在我想创建一个与此功能相同的移动应用程序 . 所以我创建了一个Web服务来访问所有require方法来访问数据 . 现在我必须从移动应用程序验证用户身份 . 因此,用户应该能够在移动设备上使用他的凭据登录一次,并且他应该能够访问他的内容 .
我的想法是,在用户通过身份验证后,后续API调用应使用Web服务提供的令牌与Web服务进行通信 . 我对oAuth有基本的了解 . 所以我的计划是在我的应用程序中创建一个oAuth服务器,它为我的应用程序提供密钥 . 应用程序使用secret连接并在验证时获取令牌 . App使用此令牌进行进一步的API调用 .
现在我的问题是
-
我是否正确使用oAuth或者不是oAuth .
-
有没有比这更好的实施 .
-
我已经搜索过类似的暗示,但我在尝试oAuth关键字时发现的只是google oauth身份验证 .
-
使用我们在数据库中拥有的登录凭据从移动应用程序验证用户的替代方法是什么 .
3 回答
使用PHP很好,但如果你希望用户登录一次然后保持他的会话打开以便将来访问应用程序,我会使用SharedPreferences . 您可以根据他/她拥有的凭据为每个用户提供访问不同片段的权限,并且每个用户都可以在其应用上获得切割后的数据 .
为了帮助您验证应用程序,this教程非常有帮助 . 如果您需要任何进一步的帮助,请告诉我:)
是的,你在某种程度上走在了正确的轨道上,但是让我建议一种现在在行业中使用的方法 .
第一次阅读问题和答案,以了解如何完成它的基本想法 .
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的东西 . 将它们视为您的应用程序服务器 . 试着理解它背后的基本原理 .
我已经为你提供了网址,因为我已经在互联网上已经有了这些网址,但我已经为你提供了以更好的方式解决问题的途径 . 如果您今后需要澄清,请告诉我 .
是的,这是 OAuth 访问令牌的好例子 .
但是,我会更进一步,建议使用 JWT (JSON Web Tokens)作为API密钥 . JSON Web令牌是自我验证,数字签名并包含有关登录用户的属性 . 这意味着您必须在每个API请求中将数据放在中央存储中 .
令牌签名/验证有很多库http://jwt.io/#libraries
在你的情况下,你只需要其中两个:for PHP和Java
如果您对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