美文网首页
Laravel使用Identity4进行用户统一认证

Laravel使用Identity4进行用户统一认证

作者: jfwangncs | 来源:发表于2019-06-03 16:34 被阅读0次

    .net core使用identity server4初步实现了一套用户统一认证服务器,用了两种认证模式一种password认证,一种是Implicit模式,客户端即支持API的用户认证也支持其他系统的跨系统认证。

    .net的客户端就不用再说了,直接使用identity server4提供的功能,下面主要说下php下的laravel框架客户端开发。

    1、需要引入两个库

    composer require jumbojett/openid-connect-php

    oauth2.0的认证,支持oauth2.0的4种认证模式。

    composer require lcobucci/jwt

    解析认证后的token,分析认证用户信息。

    2、去掉自带的Auth的controller新建AuthController

    两个方法一个进行登录认证,一个callback处理认证信息

    public function login()
    {
    
        $oidc = new OpenIDConnectClient('http://localhost:5000',
            'DotnetCoreClient');
        $oidc->setResponseTypes(array('id_token'));
        $oidc->setRedirectURL('http://localhost:8090/call_back'); //设置项目RedirectURL
        $oidc->addScope(array('openid profile'));
        $oidc->setAllowImplicitFlow(true);
        $oidc->addAuthParam(array('response_mode' => 'form_post'));
        $oidc->authenticate();
    }
    
    public function callback()
    {
        $token = (new Parser())->parse((string)$_POST['id_token']); // Parses from a string
        $user = new User();
        $user->name = $token->getClaim('nickname');
        $user->id = $token->getClaim('UserId');
        if (!User::where('id', $user->id)->first())
            $user->save();
        //$user->update();
        Auth::login($user);
        return redirect('/');
    }
    

    这其中主要就是要注意RedirectURL,这个在认证服务端也要做设置。
    然后就是回调登陆后,laravel的每个页面都要去数据库验证一下,所有这里要先建立一个users表,初始字段包括id name,
    其他字段可自行添加处理,保存到自己的数据库,以便后续验证。
    3、路由配置
    Route::get('/', 'HomeController@Index');
    Route::get('login', 'AuthController@Login')->name('login');
    Route::post('call_back', 'LoginController@Callback')->name('call_back');
    在 app/Http/Middleware/VerifyCsrfToken.php 中,添加 except 规则,去掉call_back的csrf验证。

    完毕。总体来说项目是初步搭建起来了,后期继续深度学习oauth2.0,indenity server4。
    https://github.com/jfwangncs/IdentityMicroServer/PHPClient

    相关文章

      网友评论

          本文标题:Laravel使用Identity4进行用户统一认证

          本文链接:https://www.haomeiwen.com/subject/edaptctx.html