Guide: Joomla OAuth Client Integration with Laravel Passport Single Sign-On (SSO) | Laravel Passport SSO


Integration of Laravel Passport Single Sign-on (Laravel Passport SSO) with Joomla using OAuth 2.0 Protocol. The miniOrange Joomla OAuth / OpenID Connect Single Sign-on (SSO) plugin makes it simple to set up Laravel Passport SSO into Joomla and enable secure login into joomla. As a result, users can log in to Joomla and access the site by authenticating with their Laravel Passport OAuth provider credentials.
Visit our Joomla OAuth Client Plugin webpage to learn more about the features and plans we offer for the Joomla OAuth Single Sign-on (OAuth & OpenID connect) plugin.

Plugin Download and Video Setup Guide


Steps to configure Laravel Passport Single Sign-On (SSO) into Joomla

1. Setup Laravel Passport as OAuth Provider

  • Download Laravel Passport.
  • Create a laravel project on your machine using command and set it up:
  • composer create-project --prefer-dist laravel/laravel blog
  • Install Laravel Passport
  • composer require Laravel/Passport
  • Go to config/app.php and add the below class under, provider section in the app.php file
  • Laravel\Passport\PassportServiceProvider::class,
  • Run php artisan migrate command
  • Run php artisan passport:install command
  • Go to app/User.php model class, add HasApiTokens trait to the code:-
  • 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', ]; }
  • Go to this path app/Providers and open file AuthServiceProvider.php, add Passport routes to the service code is given below and save it:
  • 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();
    //
    }
    }
  • Go to config/auth.php change the API driver token to passport as we are going to use Passport library.
  • 'guards' => [
    'web' => [
    'driver' => 'session',
    'provider' => 'users',
    ],
    'api' => [
    'driver' => 'passport',
    'provider' => 'users',
    'hash' => false,
    ],
    ],
  • Now Set up a demo resource you can make an API route in routes/api.php file.
  • To get Client ID and Client Secret run following commands: php artisan passport:client It will ask you the following questions:
  • 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]:
    > http://localhost/oauth2_client/callback.php
    New client created successfully.
    Client ID: 1
    Client secret: zMm0tQ9Cp7LbjK3QTgPy1pssoT1X0u7sg0YWUW01

  • To create a UserInfo endpoint manually, in the app/Http/Controllers, create a file UserController.php:
  • use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    use App\User;
    class UserController extends Controller
    {
    public function get(Request $request)
    {
    $user_id = $request->get("uid", 0);
    $user = User::find($user_id);
    return $user;
    }
    }
  • Also, register the API route by adding the below line in routes/api.php file:
  • Route::middleware('auth:api')->get('/user/get', 'UserController@get');
  • Now you can connect OAuth client with Laravel Passport (OAuth Provider) and the following endpoints are:
    ( Run php artisan serv in cmd to get your-laravel-site-url (Domain). )
  • Authorization endpoint: http://your-laravel-site-url/oauth/authorize
    Token endpoint: http://your-laravel-site-url/oauth/token
    User info endpoint: http://your-laravel-site-url/api/user/get

You have successfully configured Laravel Passport as OAuth Provider for for achieving Laravel Passport Single Sign-On (SSO) with Joomla for user integration.



2. Configure Joomla as OAuth Client


  • Download the zip file for the miniOrange OAuth Client plugin for Joomla from the link here.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Login into your Joomla site’s administrator console.
  • From left toggle menu, click on System, then under Install section click on Extension.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Upload the downloaded zip file to install the Joomla OAuth Client plugin.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • From left toggle menu click on Components, then click on miniOrange OAuth Client , then click on Configure OAuth tab.
  • Under Configure OAuth tab . Select your OAuth Provider. (If your OAuth Provider not listed then click on Custom OAuth/ Custom OpenID connect App .)
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Fill in the details you received from your OAuth Provider.
  • Copy the Redirect/Callback URL given in the plugin and click on the Save Settings button to save details in your OAuth Provider. Then click on Test Configuration button.
  • joomla oauth provider OAuth tab
  • After click on the Test Configuration button and copy the email and name attributes and save these attributes in Email Attribute and Name Attribute text field respectively. Now click on the Save Attribute Mapping button to save your configurations.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Use the Login URL to perform the SSO of your pre-configured OAuth/OpenID Connect Provider, (After completing test configuration please copy the Login URL and Add a button on your site login page).
  • Joomla OAuth Client - Login URL
  • Now logout and go to your Joomla site's pages where you have added this link. You will see a login link where you placed that button. Click on this button to perform SSO.
  • Congratulations, you have successfully configured the miniOrange OAuth Client plugin with your desired OAuth Provider.
  • Click on the Upgrade Plans tab to check out our complete list of features and various licensing plans. OR you can click here to check features and licensing plans
  • If you want to purchase any of the paid version of the plugin, you have to register/login with us in Account Setup tab. OR you can register/login Here
  • In case, you are facing some issue or have any question in mind, you can reach out to us by sending us your query through the Support button in the plugin or by sending us a mail at joomlasupport@xecurify.com.

  • Download the zip file for the miniOrange OAuth Client plugin for Joomla from the link here.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Login into your Joomla site’s administrator console.
  • Go to Extension Manage Install in the top navigation bar to install the plugin.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Upload the downloaded zip file to install the OAuth Client plugin.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Navigate to Extensions Manage Manage and search for miniorange in the Search bar provided to see the list of the components.
  • Go to Components MiniOrange OAuth Client Configure OAuth tab from the top navigation bar to go to the configuration page of the plugin.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Select your OAuth Provider from the Select Application dropdown. In case your OAuth Provider is not listed in the drop down, please select Custom OAuth Provider to continue.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Fill in the details you received from your OAuth Provider.
  • Copy the Redirect/Callback URL given in the plugin and click on the Save Settings button to save details in your OAuth Provider.
  • Click on the Test Configuration button and copy the email and name attributes and save these attributes in Email Attribute and Name Attribute text field respectively. Now click on the Save Attribute Mapping button to save your configurations.
  •  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration  Joomla Oauth / OpenID Connect Single Sign-on SSO for Joomla - App Client Configuration
  • Use the Login URL to perform the SSO of your pre-configured OAuth/OpenID Connect Provider, (After completing test configuration please copy the Login URL and Add a button on your site login page).
  • Joomla OAuth Client - Login URL
  • Now logout and go to your Joomla site's pages where you have added this link. You will see a login link where you placed that button. Click on this button to perform SSO.
  • Congratulations, you have successfully configured the miniOrange OAuth Client plugin with your desired OAuth Provider.
  • Click on the Upgrade Plans tab to check out our complete list of features and various licensing plans. OR you can click here to check features and licensing plans
  • If you want to purchase any of the paid version of the plugin, you have to register/login with us in Account Setup tab. OR you can register/login Here
  • In case, you are facing some issue or have any question in mind, you can reach out to us by sending us your query through the Support button in the plugin or by sending us a mail at joomlasupport@xecurify.com.

Additional Resources


Mail us on joomlasupport@xecurify.com for quick guidance(via email/meeting) on your requirement and our team will help you to select the best suitable solution/plan as per your requirement.

Hello there!

Need Help? We are right here!

support
Contact miniOrange Support
success

Thanks for your inquiry.

If you dont hear from us within 24 hours, please feel free to send a follow up email to info@xecurify.com