Sökresultat :

×

OAuth Single Sign-On (SSO) För Laravel som använder Laravel Passport som OAuth-leverantör


Laravel OAuth enkel inloggning (SSO)-pluginet ger möjlighet att aktivera OAuth Single Sign-On för dina Laravel-applikationer. Med Single Sign-On kan du bara använda ett lösenord för att komma åt din Laravel-applikation och dina tjänster. Vårt plugin är kompatibelt med alla OAuth-kompatibla identitetsleverantörer. Här går vi igenom en steg-för-steg-guide för att konfigurera Single Sign-On (SSO) mellan Laravel och Laravel Passport med Laravel Passport som OAuth-leverantör. För att veta mer om andra funktioner vi tillhandahåller i Laravel OAuth-klientens single-sign-on-sso-plugin kan du... Klicka här.

Installation av Laravel Oauth-klient

  • Öppna ett kommandotolksfönster och ändra arbetskatalogen till din Laravel-appens huvudkatalog och installera Laravel OAuth-pluginet med kommandot nedan.
  • composer require miniorange/oauth-laravel-free
  • Efter en lyckad installation av paketet, gå till din Laravel-app i webbläsaren och skriv in {laravel-application-domain}/mo_oauth_admin
  • Paketet börjar ställa in din databas åt dig och omdirigerar dig sedan till administratörsregistreringssidan.
  • Registrera dig eller logga in med ditt miniOrange-konto för att konfigurera plugin-programmet.
  • Laravel Single Sign On SSO-plugininställningar
  • Efter inloggning kommer du att se OAuth-leverantörsinställningar alternativ, där du kommer att få Omdirigerings-/återuppringnings-URL. Ha det till hands eftersom det kommer att krävas senare för att konfigurera Laravel Passport Single Sign-On (SSO).
  • Laravel Single Sign On SSO OAuth-klientinställningar

Steg för att konfigurera Laravel Passport Single Sign-On (SSO) Inloggning i Laravel

1. Konfigurera Laravel Passport som OAuth-leverantör

  • Installera laravel-pass med kommandot nedan
  • composer require laravel/passport
  • Gå till config/app.php och lägg till nedanstående leverantör
  • Laravel\Passport\PassportServiceProvider::class
  • Körning php artisan migrera kommando
  • Körning php artisan passport:installera kommando
  • Gå till app/Modeller/User.php modellklass, tillägg HasApiTokens egenskap hos koden:
  • 
         
        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',
            ];
        }
        
        
        
  • För Laravel version 9.0 nedan: Gå till app/Providers/AuthServiceProvider.php, Lägg till använd Laravel\Passport\Pass; , Passport::routes(); rutter till servicekoden anges nedan:
  •     
        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();
                //
            }
        }
        
  • Gå till config/auth.php ändra api förartecken till pass eftersom vi ska använda Passport-biblioteket.
  • 
        'guards' => [
                'web' => [
                    'driver' => 'session',
                    'provider' => 'users',
                ],
                   'api' => [
                    'driver' => 'passport',
                    'provider' => 'users',
                   'hash' => false,
                ],
            ],
        
  • För att skapa en UserInfo-slutpunkt manuellt, i app/Http/Controllers, skapa en fil 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;
            }
        }
        
  • Registrera också API-rutten genom att lägga till raden nedan routes/api.php fil:
  • 
        //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');
        
  • För att få kund-ID och Klienthemlighet kör följande kommandon: php hantverkspass:klient Den kommer att ställa dig följande frågor:
  • 
         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. Konfigurera Laravel OAuth-klientplugin för Laravel Passport

  • Gå till miniOrange Laravel OAuth SSO plugin och klicka på Välj Laravel Passport som OAuth-leverantör.
  • Laravel Single Sign On SSO välj app
  • Ange kund-ID och Klienthemlighet från Laravel Passport Applikation.
  • Laravel Single Sign On SSO-sparinställningar
  • Se tabellen nedan för att konfigurera Omfattning och endpoints .
  • Omfattning: Lämna omfångsfältet tomt
    Auktorisera slutpunkt: http://your-laravel-site-url/oauth/authorize
    Åtkomsttokens slutpunkt: http://your-laravel-site-url/oauth/token
    Hämta UserInfo Endpoint: http://your-laravel-site-url/api/user/get
  • Du kan skicka in klientuppgifterna rubrik or kropp och även skicka tillstånd parametern anges därför även inloggningsattribut enligt ditt krav.
  • Laravel Single Sign On SSO välj app
  • Klicka på spara inställningar knapp. Efter det, klicka på testkonfiguration knappen. Du får upp en lista över attributnamn och attributvärden som skickas av din OAuth-leverantör.
  • Laravel Single Sign On SSO-sparinställningar

3. SSO-alternativ

  • Du kan också använda en länk för att logga in via din OAuth/OpenID-leverantör.
  • Denna länk är i formatet:
    {laravel-application-domain}/ssologin.php?option=oauthredirect

I den här guiden har du konfigurerat Laravel Passport Single Sign-On (SSO) med hjälp av Laravel som OAuth-klient. Denna lösning säkerställer att du är redo att rulla ut säker åtkomst till din Laravel-webbplats med hjälp av Laravel Passport-inloggning inloggningsuppgifter inom några minuter.

Ytterligare resurser

Hej där!

Behövs hjälp? Vi är här!

stödja