single sign-on
Nu wil ik mijn applicatie gaan voorzien van Single Sign-On (SSO). Ik heb het bij een klant wel eens helpen inrichten, maar ik heb het nog nooit zelf gebouwd. Ik weet dat PHP kan communiceren met LDAP en dat er mogelijkheden zijn voor SASL, en SASL kan via GSSAPI gekoppeld worden aan Postgres.
Maar daar houdt mijn kennis even op. Er zijn veel verschillende authenticatiemechanismen, protocollen, en manieren om het in te richten, dat ik het nog niet voor me zie.
Hoe zou SSO ingericht kunnen worden voor een PHP + Postgres applicatie? De webserver is nu nginx, maar kan vervangen voor apache. Moet ik een een PAM module (apache) of SPNEGO plugin (nginx) gebruiken? Of kan het misschien direct via Postgres?
Het mooiste zou zijn als ik zo min mogelijk speciaals in PHP hoef te doen.
Elk duwtje in de goede richting wordt gewaardeerd.
PHP kan tegen die LDAP server praten en een user naar een microsoft url door verwijzen.
Daar logt hij in, en als dat succesvol is, wordt hij terug verwezen naar jouw PHP scripts.
Daarbij is het wel handig als de gebruikersnamen gelijk zijn, of gemapt worden.
Voorbeeld:
mijn gebruikersnaam in de LDAP server was [email protected]
En in de intranet applicatie was het "ivo". Door "@xyz.nl" af te knippen van de teruggemelde gebruikersnaam (niet te verwarren met een emailadres dat qua syntax gelijk was) kon ik achterhalen dat gebruiker "ivo" ingelogd was.
Dan sprong mijn script naar het punt na de oude controle "is er een loginform gepost met gebruikersnaam + wachtwoord en vind ik die combi inderdaad in de database".
Resultaat was dan simpel gezegd: $_SESSION['user'] = 'ivo'; $_SESSION['ingelogd'] = true;
Extra settings aan de server waren niet nodig: eigenlijk alleen een lib in PHP die met composer geladen wordt:
lusitanian/oauth
https://packagist.org/packages/lusitanian/oauth
hier nog een link naar een stappenplan: https://medium.com/@prasoon_98674/how-to-integrate-active-directory-in-php-application-for-sso-22eb62b6b866 waarbij het meeste werk niet bij PHP ligt.
Toevoeging op 30/04/2021 11:51:27:
even verder gezocht: mijn script lijkt sterk op wat hier gedaan wordt.
https://www.youtube.com/watch?v=9FupzL2XsqA
Wel een opmerking over de Azure kant van het verhaal: mijn systeembeheerder klaagde dat aan de lopende band updates uitgerold werden voor Azure, waarbij de lay van die schermen steeds anders was dan in de handleidingen
En je hebt dus kennelijk
composer require magium/active-directory
nodig.
Maar aangezien ik op het moment niet op de server kan kijken, heb ik niet de actuele stand van zaken hier beschikbaar om het op te zoeken.