我有一个基于laravel的应用程序,它向其前端SPA提供Laravel / Passport。
现在,我想在我的第二个Laravel应用程序中使用此OAUTH2服务器为用户提供登录功能。
两个服务都可以使用内部网络相互访问。 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(),
],
]);