2

我已经设置了一个中央应用程序(我们称之为maindomain.com),在那里我设置了 Passport。该站点将是用户注册以访问我创建的所有其他应用程序的地方。

为了测试它,我按照Matt Stauffer 的博客文章创建了一个客户端应用程序,该应用程序将使用存储在 上的用户数据maindomain.com,我们称之为app1.com.

我可以确认我的回调和其他工作正常。当您去app1.com/login(根据我的路线)时,它会重定向到maindomain.com并允许您授权app1.com使用您的登录详细信息 - 漂亮。

根据马特的帖子,现在它将令牌打印到屏幕上。我需要更改它以将其保存到数据库中 - 我假设我应该在我的用户表上创建一个列并将其存储在那里?

我已经测试了令牌并且可以使用 Postman 访问 API 路由。但是,因为目前我正在创建都需要使用这个集中式用户系统的 Web 应用程序,所以我不确定如何使用登录表单来授权用户并允许他们访问他们的仪表板。

如果用户正在登录app1.com,我是否发送 POST 请求到maindomain.com?这不是 CSRF 的问题吗?我已经阅读了文档,但由于这是我第一次尝试,Oauth2我很困惑。

4

2 回答 2

1

如果您希望登录表单驻留在 app1.com 上,您唯一的选择是密码授予流程 - app1.com 将获取用户凭据并向 maindomain.com 上的 oauth/tokens 发出 POST 请求,以获取访问令牌。此 POST 请求可能发生在前端或后端(更安全 - 客户端密码将被隐藏),这取决于您。

否则,听起来您的授权代码流程已经启动并正在运行。您可以继续将用户重定向到 maindomain.com(Facebook 和大多数其他 OAuth2 提供商选择这种方式),使用那里的登录表单,然后重定向回来并根据授权码获取访问令牌。将该代码保存在您的 app1.com 数据库中,并允许用户使用它访问仪表板。当它到期时 - 再次启动流程。

于 2016-10-13T00:42:51.887 回答
0

尝试观看 Taylor(laravel 的创建者)的视频以开始:

https://laracasts.com/series/whats-new-in-laravel-5-3/episodes/13

我为这两个项目创建了存储库,并确认它们可以正常工作:

API 服务器: https ://github.com/jeremykenedy/laravel-passport

API 消费者: https ://github.com/jeremykenedy/laravel-consumer

尝试在路由文件中创建受api.php保护的 API 端点,并在需要时使用令牌范围来进一步保护 API 端点:)

于 2016-10-13T01:43:48.593 回答