承接 redmix0901/oauth2-client-sso 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

redmix0901/oauth2-client-sso

最新稳定版本:v1.8.2

Composer 安装命令:

composer require redmix0901/oauth2-client-sso

包简介

Package kết hợp với oauth2 client tạo đăng nhập single sign on

README 文档

README

Cài đặt qua composer

composer require redmix0901/oauth2-client-sso

publish file config vào thư mục config

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

Sử dụng

middleware này sẽ luôn làm mới access token khi hết hạn.

Route::middleware('oauth2-sso') 

Nếu bạn muốn redirect về trang Auth Server để đăng nhập nếu user chưa đăng thì thêm redirect phía sau.

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

Nếu muốn token được gắn trên cookie, để gọi xác thực api thì thêm cookie

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

Hoặc bạn có thể kết hợp cả 2:

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

Nếu cần xác thực Token của user từ Resource Server lên (Auth Server) id.todpev.vn thì dùng guard và config trong file config/auth.php như sau

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

Việc xác thực API sẽ có 2 trường hợp:

  • Nếu không tách Resource Server và App Server ra làm 2 thì bạn có thể kiểm bằng cách thông qua cookie.
Route::middleware('oauth2-sso:cookie') 

middleware này sẽ gắn token vào cookie và server sẽ kiểm tra token đó để xác thực.

  • Trường hợp 2 là tách Resource Server và App Server: Bạn có xác thực bằng cookie với điều kiện là cả 2 cùng là Laravel, chung APP_KEY và setup subdomain có thể share cookie cho nhau, và khai báo middleware như trên. Hoặc bạn phải gắn token vào header.
'Authorization' => 'Bearer ' . $token

-Trong trường hợp sử dụng Single page application, khi token trên cookie hết hạn bạn có thể gọi request /oauth2/issueToken để được cấp phát token mới. Nếu có lỗi, hết hạn hoặc bị logout thì sẽ trả về message sau:

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

Chỉnh sửa config như sau:

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

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

defaults là không bắt buộc. Nếu không chỉnh sửa defaults thì bạn có thể dùng auth()->guard('oauth2')->user()

Nếu muốn lấy thông tin user từ request có thể dùng cách sau.

$request->user()

Nếu bạn chọn config mapingUser = true.
User sẽ được tự động map với user trong database cũa App Server.

Nếu Auth Server trả về 1 user mới thì nó sẽ tự động tạo 1 user với các trường mà Auth Server trả về và được map với fillable trong model User. Việc của bạn là update thông tin cho user đó trong event:

Redmix0901\Oauth2Sso\Events\UserSsoCreated::class

Có thể logout bằng link sau: /oauth2/logout hoặc bằng tên route sso.logout

Có thể login bằng phương thức get link sau: /oauth2/login hoặc bằng tên sso.login.authorization_code

Login with email, password bằng phương thức post: /oauth2/login hoặc bằng tên sso.login.password_grant

统计信息

  • 总下载量: 2.3k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-10-25