Met de client-side single sign on (SSO oplossing van E-Golf4U is het eenvoudig om een SSO koppeling te maken tussen een website en verschillende applicaties. Door middel van simpele cross browser oplossingen werkt deze SSO voor alle nieuwe browsers incl. safari.

Werking
Door het registreren van login endpoints in de config van de SSO worden client-side de verschillende login acties aangeroepen. Dit gebeurt bij de meeste browsers middels verborgen iframes en bij safari met zogenaamde popunders. De reden voor dit verschil is dat het standaard niet mogelijk is in safari om cross-domain cookies te setten in een iframe. 

Flow
  • Registreren van login endpoints in SSO
  • Afvangen van onClick op submit knop in inlog formulier
  • credentials verifiëren tegen E-Golf4U database middels JSONP
  • endpoints aanroepen middels hidden iframe en post formulieren of via popunders
  • na een timing van een aantal seconden geforceerd het formulier submitten om in te loggen in de huidige website

Includen van SSO

Stappen om de SSO functionaliteit (hierna genoemd EGSSO) te includen in de website

  1. EGSSO gebruikt jquery. Laad jquery van de google CDN middels:
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  2. Laadt het EGSSO script van:
    <script src="//login.e-golf4u.nl/js/sso/sso.js"></script>
  3. Creëer een client script voor het afhandelen van de login.
    Bijvoorbeeld: sso_client.js 

    Voorbeeld:
    http://login.e-golf4u.nl/js/sso/example.js

Gebruiken van SSO en custom client code

Constructor (naam van club, link naar blanco file)
Er dient de naam van de clubnaam meegegeven te worden en een link naar een blanco file, dit is nodig om internet explorer goed te laten werken.
egolf_sso = new EGSSO('CLUBNAAM', 'http://www.CLUBNAAM.nl/blank.html');
 
Register (options)
Elke applicatie dient geregistreerd te worden middels de register call. De enige parameter is een settings object met de volgende properties:
  • login_endpoint : url
    Een url naar een endpoint waar een POST request naar gemaakt kan worden. Als deze niet meegegeven wordt wordt er geen login call gemaakt. Het is mogelijk om bijvoorbeeld alleen maar een logout endpoint mee te geven (zie logout_endpoint) om het script alleen maar een logout call te laten doen.
  • logout_endpoint : url
    Een URL naar een endpoint waar middels GET de user uitgelogd kan worden 
  • username_field : string
    De naam van het veld waar de login endpoint de username verwacht. 
  • password_field
    De naam van het veld waar de login endpoint het wachtwoord verwacht. 

//Register egolf4u iframe
egolf_sso.register({ name: 'Iframe',
    login_endpoint : 'http://CLUBNAAM.e-golf4u.nl/leden/iframe/default/login',
    logout_endpoint : 'http://CLUBNAAM.e-golf4u.nl/leden/iframe/default/logout',
    username_field : 'gebruikersnaam',
    password_field : 'wachtwoord'
});

Login (username, password)

Start het login proces met de username en het wachtwoord. Dit is vaak de value van het bijbehorende tekstveld in het inlogformulier.

Logout ()
Roep de logout functie aan om het logout process te starten. Hiermee worden alle geregistreerde logout_endpoint aangeroepen.

setcallback (callback_name, function)
Het script werkt met een drietal callbacks die gefired worden na drie verschillende acties, te weten: Na login, bij error en na logout.
Het is mogelijk een callback functie te laden in het script zodat er op dat moment een bepaalde actie uitgevoerd kan worden zoals bijvoorbeeld het tonen van een foutmelding of het tonen van een 'Bezig met in te loggen' melding.

login
logout
error