Procurar Resultados :

×

Registrar Contato

OAuth Single Sign-On (SSO) para Laravel usando Laravel Passport como provedor OAuth


O plugin Laravel OAuth Single Sign-On (SSO) permite habilitar o Single Sign-On (SSO) via OAuth para suas aplicações Laravel. Com o SSO, você pode usar apenas uma senha para acessar sua aplicação e serviços Laravel. Nosso plugin é compatível com todos os provedores de identidade que atendem aos requisitos do OAuth. Aqui, apresentaremos um guia passo a passo para configurar o SSO entre o Laravel e o Laravel Passport, considerando o Laravel Passport como provedor OAuth. Para saber mais sobre outros recursos que oferecemos no plugin Laravel OAuth client single-sign-on-sso, clique aqui.

Instalação do cliente Laravel Oauth

  • Abra uma janela de prompt de comando e altere o diretório de trabalho para o seu Diretório principal do aplicativo Laravel e instale o plugin Laravel OAuth usando o comando abaixo.
  • composer require miniorange/oauth-laravel-free
  • Após a instalação bem-sucedida do pacote, acesse o aplicativo Laravel no navegador e digite {laravel-application-domain}/mo_oauth_admin
  • O pacote começará a configurar seu banco de dados e então o redirecionará para a página de registro do administrador.
  • Registre-se ou faça login com sua conta miniOrange para configurar o plugin.
  • Configurações do plugin SSO de logon único do Laravel
  • Após o login, você verá o Configurações do provedor OAuth opção, onde você obterá o URL de redirecionamento/retorno de chamada. Mantenha-o à mão, pois ele será necessário mais tarde para configurar o Laravel Passport Single Sign-On (SSO).
  • Configurações do cliente SSO OAuth do Laravel Single Sign On

Etapas para configurar o login único (SSO) do Laravel Passport no Laravel

1. Configurar o Laravel Passport como provedor OAuth

  • Instale o Laravel Passport usando o comando abaixo
  • composer require laravel/passport
  • Acesse config/app.php e adicione o provedor abaixo
  • Laravel\Passport\PassportServiceProvider::class
  • Execute php artesão migrar comando
  • Execute passaporte do artesão php: instalar comando
  • Acesse app/Modelos/Usuário.php classe de modelo, adicionar HasApiTokens característica do código:
  • 
         
        namespace App;
        use Laravel\Passport\HasApiTokens;
        use Illuminate\Contracts\Auth\MustVerifyEmail;
        use Illuminate\Foundation\Auth\User as Authenticatable;
        use Illuminate\Notifications\Notifiable;
         
        class User extends Authenticatable
        {
          use HasApiTokens, Notifiable;
         
          
            /**
             * The attributes that are mass assignable.
             *
             * @var array
            */
            protected $fillable = [
                'name', 'email', 'password',
            ];
         
            /**
             * The attributes that should be hidden for arrays.
             *
             * @var array
             */
            protected $hidden = [
                'password', 'remember_token',
            ];
         
            /**
             * The attributes that should be cast to native types.
             *
             * @var array
             */
           
            protected $casts = [
                'email_verified_at' => 'datetime',
            ];
        }
        
        
        
  • Para a versão 9.0 do Laravel abaixo: Acesse aplicativo/Provedores/AuthServiceProvider.php, adicionar usar Laravel\Passport\Passport; , Passport::routes(); as rotas para o código de serviço são fornecidas abaixo:
  •     
        namespace App\Providers;
        use Laravel\Passport\Passport;
        use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
        use Illuminate\Support\Facades\Gate;
         
        class AuthServiceProvider extends ServiceProvider
        {
        
            /**
             * The policy mappings for the application.
             *
             * @var array
             */
            protected $policies = [
                // 'App\Model' => 'App\Policies\ModelPolicy',
            ];
         
            /**
             * Register any authentication / authorization services.
             *
             * @return void
             */
            public function boot()
            {
                $this->registerPolicies();
                Passport::routes();
                //
            }
        }
        
  • Acesse config/auth.php alterar o api token de driver para passaporte pois usaremos a biblioteca Passport.
  • 
        'guards' => [
                'web' => [
                    'driver' => 'session',
                    'provider' => 'users',
                ],
                   'api' => [
                    'driver' => 'passport',
                    'provider' => 'users',
                   'hash' => false,
                ],
            ],
        
  • Para criar um endpoint UserInfo manualmente, no aplicativo/Http/Controladores, crie um arquivo UserController.php:
  • 
        <?php
        namespace App\Http\Controllers;
        use App\Http\Controllers\Controller;
        use Illuminate\Http\Request;
        use App\Models\User;
        use Auth;
        class UserController extends Controller
        {
            public function get(Request $request)
            {
              $user_id = Auth::id();
              $user = User::find($user_id);
              return $user;
            }
        }
        
  • Além disso, registre a rota da API adicionando a linha abaixo em rotas/api.php arquivo:
  • 
        //For Laravel below 8 and migrated to the 8 version:
        Route::middleware('auth:api')->get('/user/get', 'UserController@get');
         

    OR

    
        //For Laravel 8 new users:
        use App\Http\Controllers\UserController;                                                                       
         Route::middleware('auth:api')->get('/user/get', 'App\Http\Controllers\UserController@get');
        
  • Para obter ID do cliente e Segredo do cliente execute os seguintes comandos: passaporte do artesão php:cliente Ele fará as seguintes perguntas:
  • 
         Which user ID should the client be assigned to?:
         > 1
         
         What should we name the client?
         > Demo OAuth2 Client Account
         
         Where should we redirect the request after authorization?
         [http://localhost/auth/callback]
         
        > Click Here to copy the Redirect URL.
          
        New client created successfully.
        
        Client ID: 1
        Client secret: zMm0tQ9Cp7LbjK3QTgPy1pssoT1X0u7sg0YWUW01
        


2. Configurar o plugin do cliente Laravel OAuth para o Laravel Passport

  • Vou ao miniOrange Laravel OAuth SSO plugin e clique em Escolha Laravel Passport como provedor OAuth.
  • Aplicativo de seleção de logon único Laravel SSO
  • Introduzir o ID do cliente e Segredo do cliente do Laravel Passport App.
  • Configurações de salvamento do SSO do Laravel Single Sign On
  • Consulte a tabela abaixo para configurar o Objetivo e Pontos finais .
  • Escopo: Deixe o campo Escopo vazio
    Autorizar ponto final: http://your-laravel-site-url/oauth/authorize
    Ponto final do token de acesso: http://your-laravel-site-url/oauth/token
    Obter endpoint UserInfo: http://your-laravel-site-url/api/user/get
  • Você pode enviar as credenciais do cliente em cabeçalho or corpo e também enviar estado parâmetro de acordo também entra atributo de login conforme sua exigência.
  • Aplicativo de seleção de logon único Laravel SSO
  • Clique em salvar configurações botão. Depois disso, clique em configuração de teste botão. você obterá a lista de nomes de atributos e valores de atributos que são enviados pelo seu provedor OAuth
  • Configurações de salvamento do SSO do Laravel Single Sign On

3. Opções de SSO

  • Você também pode usar um link para fazer login por meio do seu provedor OAuth/OpenID.
  • Este link está no formato:
    {laravel-application-domain}/ssologin.php?option=oauthredirect

Neste guia, você configurou com sucesso o Single Sign-On (SSO) do Laravel Passport usando o Laravel como cliente OAuth . Essa solução garante que você esteja pronto para implementar acesso seguro ao seu site Laravel usando as credenciais de login do Laravel Passport em poucos minutos.

Recursos adicionais

Olá!

Preciso de ajuda? Estamos bem aqui!

ajuda