stru / stru-hyperf-oauth
Hyerf 下的 oauth2.0-Server 组件
v0.0.7
2022-01-27 08:55 UTC
Requires
- php: >=7.3
- hyperf/command: ^2.2
- hyperf/db-connection: ^2.2
- hyperf/di: ^2.2
- hyperf/http-server: ^2.2
- hyperf/validation: ^2.2
- hyperf/view: ^2.2
- laminas/laminas-diactoros: ^2.8
- league/oauth2-server: ^8.3
- phpseclib/phpseclib: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mockery/mockery: ^1.0
- phpstan/phpstan: ^1.0
- phpunit/phpunit: >=7.0
- swoole/ide-helper: ^4.5
README
component-require
composer require stru/stru-hyperf-oauth
tips
1. 该组件配合 "stru/stru-hyperf-ui" 组件使用可以免去自己写登录注册页码的麻烦
2. 该组件 依赖 "stru/stru-hyperf-auth" 组件中的部分功能,因此要使用该组件请务必安装
3. 该组件目前只实现了auto_code_grant验证方式,其他方式可自行参考官网实例进行补充
publish
php bin/hyperf.php vendor:publish stru/stru-hyperf-ouath
migrate
php bin/hyperf.php migrate
create authCode Client
php bin/hyperf.php stru:client
该命令生成auth_code验证方式的客户端,需要手动输入name和回调地址
create rsa key
php bin/hyperf.php stru:keys
use
// 客户端----laravel做客户端代码示例
protected $url = 'http://192.168.10.1:8000/'; //客户端地址
protected $remoteUrl = 'http://192.168.10.10:9501/'; //oauth服务器地址
public function redirect(Request $request){
$request->session()->put('state', $state = Str::random(40));
$query = http_build_query([
'client_id' => 1,
'redirect_uri' => $this->url.'callback',
'response_type' => 'code',
'scope' => 'public',
'state' => $state,
]);
return redirect($this->remoteUrl.'oauth/authorize?'.$query);
}
public function callback(Request $request)
{
$http = new Client();
$response = $http->post($this->remoteUrl.'oauth/token', [
'form_params' => [
'grant_type' => 'authorization_code',
'client_id' => 1,
'client_secret' => 'QI7aUla1qVTVFqYRStqt5D56sR0s0L5HU0NS1YMG',
'redirect_uri' => $this->url.'callback',
'code' => $request->code,
],
]);
return \json_decode((string) $response->getBody(), true);
}