Laravel 5.1:如何使用 oauth2-server-laravel?

Posted

技术标签:

【中文标题】Laravel 5.1:如何使用 oauth2-server-laravel?【英文标题】:Laravel 5.1 : how to use oauth2-server-laravel? 【发布时间】:2015-12-25 14:51:18 【问题描述】:

我想做什么? 我正在尝试为在线预订航班构建 api,以便其他旅行社可以使用该 api。它具有搜索航班,显示搜索结果,预订航班和在线支付的功能。因此,我计划使用oAuth进行授权。当用户访问旅行社网站时,他们可以搜索,预订航班并可以付款。在这里,他们无需验证搜索航班和预订,而是通过第三方完成付款。我想做的是,当用户使用 api 时,他们不需要身份验证,但我们应该授权用户是否来自有效站点,所以我使用oauth grant type client credentials

我做了什么? 我正在尝试将 laravel 包 lucadegasperi/oauth2-server-laravel 用于 oauth。我已经成功地在我的项目上安装了这个包,并根据这里https://github.com/lucadegasperi/oauth2-server-laravel/wiki提供的信息完成了配置。我已经测试过使用 chrome 扩展 postman 获取访问令牌。

我对什么感到困惑? 如果我在客户端共享 client_id 和 client_secret ,那么任何其他用户都可以使用该客户端 ID 和客户端密码并使用我们的 api 。如何在用户提交搜索按钮后生成访问令牌并将该令牌用于显示搜索结果、预订等其他流程。

所以,我的问题是

    我是否使用权限授予类型进行授权?如果不是,那将 适合这个吗?

    如何使用 client_id 和 client_secret 以便我们可以授权 网站安全吗?

【问题讨论】:

【参考方案1】:

您可以编写一个 Wrapper 应用程序,其中包含您的 Client_IdClient_secret。并且您的包装应用程序也将管理访问令牌。

想法是:

每当任何请求到达您的包装器时,它都会查看缓存中是否存在任何访问令牌,如果是,则获取该令牌并向您的应用程序发出最终请求并根据您的令牌获取数据。

如果 Cache 中不存在 Token,Wrapper 应用程序将根据您的 Client_id 和 Client Secret 发出令牌请求,并获取令牌并存储令牌以供下次调用。

通过这种方式,您的应用程序不会公开您的凭据和令牌。

【讨论】:

以上是关于Laravel 5.1:如何使用 oauth2-server-laravel?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1 @can,如何使用 OR 子句

Laravel 5.1:如何使用 oauth2-server-laravel?

如何在 css 中使用 $variable,Laravel 5.1 [关闭]

Laravel 5.1 如何构建忘记密码功能

如何在 laravel 5.1 迁移中使用外键

如何在 laravel 5.1 中使用工匠制作视图