Guide for Joomla Oauth Sign On (SSO) Using Laravel Passport


If you want users to log in to your Joomla site using their Laravel Application credentials, you can simply do it using our Joomla OAuth Client plugin. Once you configure the Laravel Passport with Joomla plugin, you can allow users to perform SSO to your Joomla site using Laravel Application. Similarly, To know more about other features we provide in the Joomla OAuth Client plugin, you can click here.

Step 1: Setup Laravel Passport as OAuth Provider

  • Download Laravel Passport click here.
  • 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

Step 2: Setting up the miniOrange Joomla OAuth Client plugin

  • Download the zip file for the miniOrange OAuth Client plugin for Joomla from the link here.
  • Laravel Passport, zip for Joomla
  • Login into your Joomla site’s administrator console.
  • Go to Extension Manage Install in the top navigation bar to install the plugin.
  • Laravel Passport,joomla oauth provider plugin
  • Upload the downloaded zip file to install the OAuth Client plugin.
  • Laravel Passport,joomla oauth provider zip
  • 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 in the top navigation bar to go to the configuration page of the plugin.
  • Laravel Passport,joomla oauth provider OAuth Client
  • Register/ Login with miniOrange.
  • Go to the Configure OAuth tab in the plugin. Fill in the details you received from your OAuth Provider and click on the Save Settings button.
  • Laravel Passport,joomla oauth provider OAuth tab

    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.

  • Copy the Redirect/Callback URL given in the plugin and save it 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.
  • Laravel Passport,joomla oauth provider Application Laravel Passport,joomla oauth provider Attribute Mapping
  • Add a button on your site login page with the following URL:your_home_page/base_url/?morequest=oauthredirect&app_name=xxxxxxxxx
  • You would find appropriate URL in Instructions to configure in the bellow section of Attribute Mapping (After completing test configuration please choose URL and Add a button on your site login page).

  • Now logout and go to your site. You will see a login link where you placed that button.
  • Click on the Licensing Plans Tab to check out our complete list of features and various licensing plans.
  • 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 dialog box in the Account Setup and Configure OAuth tabs.
  • Laravel Passport,server sso submit query

    In addition to the above, miniOrange also provide support for ADFS, AWS cognito, Bitrix24, Reddit, WHMCS, Square Connect, WSO2, Windows, Gigya, Dash 10, Foursquare, Harvest, MailChimp, Huddle, Ustream, Yammer, RunKeeper, SoundCloud, Pocket, Nest, Heroku, DropBox, Buffer, Hubic, Deezer, Delicious, Bitly, Mondo, Netatmo, Wechat, Weibo, Shibboleth, Invision Community, HR Answerlink/Support center, Blizzar and many more OAuth providers.

    Congratulations, you have successfully configured the miniOrange OAuth Client plugin with your desired OAuth Provider. In case you have any questions in mind, you can always mail us at joomlasupport@xecurify.com.


Business Trial For Free

If you don't find what you are looking for, please contact us at joomlasupport@xecurify.com or call us at +1 978 658 9387.