Search Results :

×

Joomla OAuth Client Integration with Laravel Passport Single Sign-On (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.

Pre-requisites: Download And Installation


Steps to Install Joomla OAuth Client Plugin

  • Download the zip file for the miniOrange OAuth Client plugin for Joomla.
  • Login into your Joomla site’s administrator console.
  • From left toggle menu, click on System, then under Install section click on Extension.
  • Upload the downloaded zip file to install the Joomla OAuth Client plugin.
  • Installation of the plugin is successful. Now click on Start Using miniOrange OAuth Client plugin.
  • Under Configure OAuth -> Pre-Configured Apps tab, select your OAuth Provider. You can also search for custom OAuth or custom OpenID application in the search bar, and configure your own custom provider.
  • Joomla OAuth Single Sign-On SSO - Select your OAuth Provider

Steps to configure OAuth SSO into Joomla

1. Configure Callback/Redirect URL

  • After selecting your OAuth provider, you will be redirected to the Step 1 [Redirect URL] tab. Now copy the Callback/Redirect URL which we will use to configure the OAuth Server, then click on the Save & Next button.
  • OAuth Single Sign-On SSO into Joomla - Copy Redirect URL
  • 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');

2. Configure Client ID and Secret

  • Go to the Step 2 [Client ID & Secret] tab of the Joomla OAuth Client plugin, here paste the Client ID, Client Secret and Tenant. Click on the Save Configuration button.
  • OAuth Single Sign-On SSO into Joomla - Save Configuration

2.1. Scope & Endpoints

  • 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). )
  • Scope:
    openid email profile
    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
    Set Client Credentials:
    In Both (In Header and In Body)

3. Configure Attribute Mapping

    User Attribute Mapping is mandatory for enabling users to successfully login into Joomla. We will be setting up user profile attributes for Joomla using below settings.

  • Go to Step 3 [Attribute Mapping] tab and click on Test Configuration button.
  • OAuth Single Sign-On SSO into Joomla - Test Configuration
  • You will be able to see the attributes in the Test Configuration output as follows.
  • OAuth Single Sign-On SSO into Joomla - Configuration output
  • Now go to the Step 3 [Attribute Mapping] tab and Select the attribute name for Email and Username from dropdown. Then click on Finish Configuration button.
  • OAuth Single Sign-On SSO into Joomla - Attribute Mapping

4. Setup Login/SSO URL

  • Now go to Step 4 [SSO URL] tab, here copy the Login/SSO URL and add it to your Site by following the given steps.
  • OAuth Single Sign-On SSO into Joomla - Login/SSO 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.

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


In this guide, you have successfully configured Joomla Laravel Single Sign-On (SSO) by configuring Laravel as OAuth Provider and Joomla as OAuth Client using our Joomla OAuth Client plugin.This solution ensures that you are ready to roll out secure access to your Joomla site using Laravel login credentials within minutes.

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