2017 © Pedro Peláez
 

library sso

VATSIM OAuth

image

vatsim/sso

VATSIM OAuth

  • Wednesday, February 22, 2017
  • by bonroyage
  • Repository
  • 6 Watchers
  • 23 Stars
  • 2,480 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 17 Forks
  • 3 Open issues
  • 6 Versions
  • 4 % Grown

The README.md

VatsimSSO

Laravel 4 compatible, use version 2 for Laravel 5, (*1)

The VatsimSSO package integrates with the VATSIM.net Single Sign On, which lets your users log themselves in using their VATSIM ID. This is especially useful for official vACCs and ARTCCs., (*2)

Version

1.0, (*3)

Installation

Use Composer to install the VatsimSSO and dependencies., (*4)

$ composer require vatsim/sso 1.*

Laravel

Set up

Using VatsimSSO in Laravel is made easy through the use of Service Providers. Add the service provider to your app/config/app.php file:, (*5)

'providers' => array(
    // ...
    'Vatsim\OAuth\OAuthServiceProvider',
),

Followed by the alias:, (*6)

'aliases' => array(
    // ...
    'VatsimSSO'       => 'Vatsim\OAuth\Facades\SSO',
),

Configuration file

Use artisan to publish the configuration file. After running the command you will find the file in app/config/packages/vatsim/sso/config.php. Change the settings accordingly., (*7)

$ artisan config:publish vatsim/sso

Outside Laravel

Let's first create a configuration file to keep our code clean., (*8)

/*
 * DO NOT PUBLISH THE KEY, SECRET AND CERT TO CODE REPOSITORIES
 * FOR SECURITY.
 */

/*
 * The location of the VATSIM OAuth interface
 */
$base = 'https://';

/*
 * The consumer key for your organisation (provided by VATSIM)
 */
$key = 'MY_KEY';

/*
 * The secret key for your organisation (provided by VATSIM)
 * Do not give this to anyone else or display it to your users. It must be kept server-side
 */
$secret = 'my_secret';

/*
 * The signing method you are using to encrypt your request signature.
 * Different options must be enabled on your account at VATSIM.
 * Options: RSA / HMAC
 */
$method = 'HMAC';

/*
 * Your RSA **PRIVATE** key
 * If you are not using RSA, this value can be anything (or not set)
 */
$cert = '';

/*
 * The URL users will be redirected to after they log in, this should
 * be on the same server as the request
 */
$return = 'http://example.com/valiatelogin';

Now, let's initialise the SSO class., (*9)

// load the Composer autoload file, which automatically
// loads all the classes required for use by VatsimSSO.
require 'vendor/autoload.php';
require 'config.php';

use Vatsim\OAuth\SSO;

$sso = new SSO($base, $key, $secret, $method, $cert);

Usage

Logging In

The first step would be to send a request to VATSIM to let the user login. The easiest approach would be using the login function. The function takes three parameters., (*10)

Parameters

Parameter Type Description
$returnUrl string | array The URL to which the user should be redirected after the login is successful
$success string | Closure Callback function containing the actions needed to be done when you are able to let the user authenticate (ie. when your key/secret are correct). The function will return three variables: $key, $secret and $url.
$error string | Closure Default: null – Callback function containing the actions needed to be done when your credentials (ie. key/secret) are incorrect.

For both $success and $error, you may pass a string in [class]@[method] format to call a function in another Model, otherwise pass an anonymous function., (*11)

Return URL

The return URL parameter will also take an array instead of a string. In this array you can add the values suspended and/or inactive to allow members with suspended or inactive accounts to log in. The first element of this array that is a valid URL will be used as the return URL., (*12)

Success

The success parameter returns three variables: $key, $secret and $url. The key and secret should be stored in a session for the validation process. The url will be used to redirect the user to the VATSIM SSO site., (*13)

Error

Optional parameter. If this parameter is ignored and an error occurs, the function will return false. If you pass a function then one parameter will be returned $error, which is an array of data related to the last error., (*14)

Example

// Laravel
return VatsimSSO::login(
    Config::get('vatsimsso:return'),
    function($key, $secret, $url) {
        Session::put('vatsimauth', compact('key', 'secret'));
        return Redirect::to($url);
    },
    function($error) {
        throw new Exception('Could not authenticate: ' . $error['message']);
    }
);

// Outside Laravel
$sso->login(
    $return,
    function($key, $secret, $url) {
        $_SESSION['vatsimauth'] = compact('key', 'secret');
        header('Location: ' . $url);
        die();
    }
);

If you prefer not to use the ->login() function, you may use ->requestToken($returnUrl). This will return an object containing the key and secret or returns false if an error occurs, at that point you can use ->error() to get the array of the last occured error. Then use ->sendToVatsim() to get the URL for the redirect., (*15)

Validating login

After the login has been successful, we need to get the user data from VATSIM. Also for this we wrote a function to make it easier for you., (*16)

Parameters

Parameter Type Description
$key string The key stored in the session at login
$secret string The secret stored in the session at login
$verifier string The oauth_verifier passed in the query string
$success string | Closure Callback function containing the actions needed to be done when the login has been successful.
$error string | Closure Default: null – Callback function containing the actions needed to be done when authentication was unsuccessful (could be because of wrong key/secret/verifier)

For both $success and $error, you may pass a string in [class]@[method] format to call a function in another Model, otherwise pass an anonymous function., (*17)

Success

The success parameter returns two variables: $user and $request. The user variable will be an object containing all user data available to your organisation. The request variable will give you information about the request., (*18)

Error

Optional parameter. If this parameter is ignored and an error occurs, the function will return false. If you pass a function then one parameter will be returned $error, which is an array of data related to the last error., (*19)

Example

// Laravel
$session = Session::get('vatsimauth');

return VatsimSSO::validate(
    $session['key'],
    $session['secret'],
    Input::get('oauth_verifier'),
    function($user, $request) {
        // At this point we can remove the session data.
        Session::forget('vatsimauth');

        Auth::loginUsingId($user->id);
        return Redirect::home();
    },
    function($error) {
        throw new Exception('Could not authenticate: ' . $error['message']);
    }
);

// Outside Laravel
$session = $_SESSION['vatsimauth'];

$sso->validate(
    $session['key'],
    $session['secret'],
    $_GET['oauth_verifier'],
    function($user, $request) {
        // At this point we can remove the session data.
        unset($_SESSION['vatsimauth']);

        // do something to log the user in on your site using the user id
        // $user->id

        // Redirect home
        header('Location: /');
        die();
    }
);

If you prefer not to use the ->validate() function, you may use ->checkLogin($key, $secret, $verifier). This will return an object containing the user and request objects or returns false if an error occurs, at that point you can use ->error() to get the array of the last occured error., (*20)

License

MIT, (*21)

Free Software, Hell Yeah!, (*22)

The Versions

22/02 2017

dev-develop

dev-develop

VATSIM OAuth

  Sources   Download

MIT

The Requires

 

by Kieran Hardern

laravel oauth sso vatsim

22/02 2017

3.0

3.0.0.0

VATSIM OAuth

  Sources   Download

MIT

The Requires

 

by Kieran Hardern

oauth sso vatsim

31/05 2015

dev-master

9999999-dev

VATSIM OAuth

  Sources   Download

MIT

The Requires

 

by Kieran Hardern

laravel oauth sso vatsim

22/02 2015

2.0

2.0.0.0

VATSIM OAuth

  Sources   Download

MIT

The Requires

 

by Kieran Hardern

laravel oauth sso vatsim

26/06 2014

1.0.1

1.0.1.0

VATSIM OAuth

  Sources   Download

MIT

The Requires

 

by Kieran Hardern

laravel oauth sso vatsim

23/06 2014

1.0

1.0.0.0

VATSIM OAuth

  Sources   Download

MIT

The Requires

 

by Kieran Hardern

laravel oauth sso vatsim