使用电子邮件和密码在OAUTH2-provider上进行身份验证

时间:2020-04-15 08:37:32

标签: laravel laravel-passport laravel-7

我有一个基于laravel的应用程序,它向其前端SPA提供Laravel / Passport。

现在,我想在我的第二个Laravel应用程序中使用此OAUTH2服务器为用户提供登录功能。

应用列表

  • Laravel-Provider :基于Laravel / Passport的OAUTH2提供程序
  • Laravel-Client :Laravel应用

两个服务都可以使用内部网络相互访问。 Laravel-Provider 不是公开的,因此不会暴露给“ www”。

我的目标

我希望允许 Laravel-Client 上的用户使用存储在 Laravel-Provider 中的用户凭据登录到 Laravel-Client 。 em>应用。

我的尝试

起初,我正在检查Laravel / Socialite以连接到 Laravel-Provider 。但是在这种情况下,访问 Laravel-Client 的用户将被重定向到 Laravel-Provider oath/authorize URL,并需要在此处提供其凭据。另外,用户应该不能直接访问 Laravel-Provider

现在,我正在考虑在 Laravel-Client 上使用某种自定义User的提供程序,该提供程序未在数据库中存储用户数据(也许是,但没有密码,或登录信息),但我在互联网上找不到很好的资源来获取示例。

我已经能够通过 Laravel-Provider 提供的API使用某种“超级用户”来获取信息:

这会获取令牌:

return $client->request('POST',
    'https://laravel-provider.test/oauth/token', [
        'headers'     => [
            'cache-control' => 'no-cache',
            'Content-Type'  => 'application/x-www-form-urlencoded',
        ],
        'form_params' => [
            'client_id'     => config('accounting.client_id'),
            'client_secret' => config('accounting.client_secret'),
            'grant_type'    => 'password',
            'username'      => config('accounting.user'),
            'password'      => config('accounting.password'),
        ],
    ]);

这将获取信息:

<?php
$client   = $this->client;
$response = $client->request('GET',
    'https://laravel-provider.test/test', [
        'headers' => [
            'Accept'        => 'application/json',
            'Authorization' => 'Bearer '.$this->getAccessToken(),
        ],
    ]);

我的问题

  • 是否甚至可以使用存储在 Laravel-Provider 中的凭据在 Laravel-Client 上登录我的用户?
  • 您知道处理此请求的任何资源吗?

0 个答案:

没有答案