redmix0901/oauth2-client-sso

与oauth2客户端结合,创建单点登录的包

v1.8.2 2022-06-15 06:41 UTC

This package is auto-updated.

Last update: 2024-09-15 11:51:50 UTC


README

通过composer安装

composer require redmix0901/oauth2-client-sso

将文件config/config.php发布到config目录

$ php artisan vendor:publish --tag=oauth2-sso-config

使用

此中间件会在access token过期时自动刷新。

Route::middleware('oauth2-sso') 

如果您想将用户重定向到Auth Server进行登录(如果用户未登录),请添加以下重定向。

Route::middleware('oauth2-sso:redirect') 

如果要将token附加到cookie上,以便调用认证API,请添加cookie

Route::middleware('oauth2-sso:cookie') 

或者您可以将两者结合使用

Route::middleware('oauth2-sso:cookie,redirect') 

如果需要从Resource Server(Auth Server)id.todpev.vn验证用户Token,请使用config/auth.php中的guard和配置,如下所示

'api' => [
    'driver' => 'sso-api',
    'provider' => 'users',
    'hash' => false,
]

验证API将有两种情况

  • 如果您没有将Resource Server和App Server分开,您可以通过cookie进行验证。
Route::middleware('oauth2-sso:cookie') 

此中间件会将token附加到cookie,服务器将检查该token进行验证。

  • 第二种情况是分离Resource Server和App Server:如果两个都是Laravel,有共同的APP_KEY,设置了可以共享cookie的子域名,并且声明了如上所示的中间件,则可以使用cookie进行验证。或者您必须将token附加到header。
'Authorization' => 'Bearer ' . $token

-在单页应用程序的使用情况下,当cookie上的token过期时,您可以调用request /oauth2/issueToken来获取新的token。如果出现错误、过期或注销,则返回以下消息

[
    'error'   => true,
    'data'    => null,
    'message' => 'Unauthenticated.',
]

按照以下方式修改配置

'defaults' => [
    'guard' => 'oauth2',
    'passwords' => 'users',
],

'guards' => [
        ...
    'oauth2' => [
        'driver' => 'sso-session',
    ]
],

defaults不是必需的。如果您不修改defaults,则可以使用auth()->guard('oauth2')->user()

如果您想从请求中获取用户信息,可以使用以下方法。

$request->user()

如果您选择config mappingUser = true。
用户将自动映射到App Server数据库中的旧用户。

如果Auth Server返回一个新用户,它将自动创建一个具有Auth Server返回的字段的新用户,并将其与model User中的fillable映射。您需要在event中更新该用户的信息。

Redmix0901\Oauth2Sso\Events\UserSsoCreated::class

可以通过以下链接注销:/oauth2/logout或通过sso.logout路由名称。

可以通过以下方式登录:/oauth2/login或通过sso.login.authorization_code路由名称。

通过post方式使用email和password登录:/oauth2/login或通过sso.login.password_grant路由名称。