Procurar Resultados :

×

Registrar Contato

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


Laravel OAuth Single Sign-On O plugin (SSO) permite habilitar o OAuth Single Sign-On para seus aplicativos Laravel. Usando o Single Sign-On, você pode usar apenas uma senha para acessar seus aplicativos e serviços Laravel. Nosso plugin é compatível com todos os provedores de identidade compatíveis com OAuth. Aqui, apresentaremos um guia passo a passo para configurar o Single Sign-On (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, você pode: 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 Laravel Passport Single Sign-On (SSO) utilizando Laravel como cliente OAuth. Esta solução garante que você esteja pronto para implementar o acesso seguro ao seu site Laravel usando Login do Laravel Passport credenciais em minutos.

Recursos adicionais

Olá!

Preciso de ajuda? Estamos bem aqui!

ajuda