移动应用程序的 Laravel RESTful API 身份验证
Posted
技术标签:
【中文标题】移动应用程序的 Laravel RESTful API 身份验证【英文标题】:Laravel RESTful API authentication for mobile app 【发布时间】:2016-10-22 17:39:50 【问题描述】:我想讨论保护您的 API 以便在移动应用程序中使用的最佳方法。
既然没有第三方,我猜OAuth不是一个好的选择? JWT 会是一个不错的选择吗?
对我来说最难理解的部分是如何进行身份验证,以便保护我的 API 中的数据,除非有人被授权调用它们。
我在服务器端使用 Laravel 5.1,我想调用 API 的移动应用程序是一个 android 应用程序。
我希望我没有忘记提及任何重要信息。 任何形式的帮助将不胜感激。
【问题讨论】:
基本身份验证可能是保护 API 的最简单方法。 感谢您的回答。是否值得实施?我的意思是质量,因为这是最简单的方法。 @csdinos 现在我有同样的问题。我认为 jwt 对于移动应用程序不太好,因为令牌会在一小时后由服务器自动失效,并且用户应该一次又一次地登录,这对于 Web 应用程序来说是可以的,但在 android 中,多次显示登录页面并不是一个好主意!我认为对于手机应用程序来说,只需一个登录过程就足够了!你怎么看?您是否使用 jwt 在您的 android 应用中对用户进行身份验证? @AliSherafat 事实是,您实际上可以更改 JWT 中令牌的寿命,所以我认为这不会是一个问题。我不完全确定这里的最佳做法是什么,但我最终使用 资源所有者凭据授权获得了 OAuth2.0。我使用 lucadegasperi/oauth2-server-laravel 包:link 【参考方案1】:使用 OAuth2
考虑将 OAuth 2 与客户端凭据授予一起使用。
您可以使用客户的凭据请求访问令牌。
Client Credentials Grant使用 OAuth 2 服务器 Laravel:
lucadegasperi/oauth2-server-laravel使用 Luca 的包实现具有客户端凭据授予的授权服务器:
Implementing Client Credentials Grant【讨论】:
感谢您的回答。我有一个问题。鉴于用户的凭证不应存储在android端,那么访问令牌的最佳寿命是多少? @csdinos 我认为这取决于您的应用程序需求。应用程序可以每天要求令牌吗?没有关于该主题的好内容。我见过这样的 API:docs.apigee.com/api-services/content/… 使用 40 天的生命周期。【参考方案2】:看看 JSON Web Token Authentication for Laravel & Lumen
它为数据和路由提供安全和保护。
【讨论】:
是的,我已经偶然发现了这个。这个想法是对通过令牌调用 API 的人进行身份验证,对吗?我有两个问题:1)数据应该是令牌的一部分还是仅将其用于身份验证? 2)在您实际进行身份验证并将令牌传递给“调用者”的API调用中,您只需通过HTTPS或其他方式保护它(用户名,密码)?JWT is used both for authentication and data protection. take a look at https://stormpath.com/blog/jwt-the-right-way
以上是关于移动应用程序的 Laravel RESTful API 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Laravel文档阅读笔记-How to Build a Rest API with Laravel: A Beginners Guide①
Laravel文档阅读笔记-How to Build a Rest API with Laravel: A Beginners Guide①
通过 Laravel 构建 RESTful 应用程序的传统方式是啥?
Laravel API Tutorial: How to Build and Test a RESTful API