Single-Sign-On ist das Thema der Stunde, es verbessert die Sicherheit und auch die User Verwaltung. Um Saml SSO in Symfony einzubauen gibt es das OneloginSaml Bundle, ein Symfony Wrapper für das php-saml Packet.
Der Vorteil für die Benutzer von SSO liegt darin, dass diese sich morgens einmal authentifizieren müssen und danach den ganzen Tag alle Anwendungen verwenden können ohne sich nochmals einloggen zu müssen.
Der Vorteil für das Unternehmen liegt darin, dass es vorgeben kann, dass die Authentifierung nur mit 2 Faktor Authentifizierung stattfinden kann (z.B. Handy App und Passwort), um mehr Sicherheit zu gewährleisten. Dies kannn in der Zukunft den steigendenden Sicherheitsbedürfnissen angepasst werden. Außerdem können zentral Rechte vergeben werden für User und nach dem Austritt aus dem Unternehmen einfach wieder entzogen werden.
Wenn das Bundle installiert und korrekt konfiguriert ist, benötigt man eine Dev-Umgebung mit einem Identity Provider (IdP). Dafür bietet sich docker-simplesamlphp an:
docker-compose.yml:
version: '3.7' services: idp: image: kenchan0130/simplesamlphp container_name: idp ports: - "8080:8080" environment: SIMPLESAMLPHP_SP_ENTITY_ID: http://localhost/saml/metadata SIMPLESAMLPHP_SP_ASSERTION_CONSUMER_SERVICE: http://localhost/saml/acs SIMPLESAMLPHP_SP_SINGLE_LOGOUT_SERVICE: http://localhost/saml/logout
Das OneloginSaml Bundle muss folgender Maßen konfiguriert werden:
hslavich_onelogin_saml: # Basic settings idp: # Identifier of the SP entity (must be a URI) entityId: 'http://localhost:8080/simplesaml/saml2/idp/metadata.php' singleSignOnService: url: 'http://localhost:8080/simplesaml/saml2/idp/SSOService.php' binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect' singleLogoutService: url: 'http://localhost:8080/simplesaml/saml2/idp/SingleLogoutService.php' binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect' x509cert: 'insert certificate here' # Service Provider Data that we are deploying. sp: entityId: 'http://localhost/saml/metadata' assertionConsumerService: url: 'http://localhost/saml/acs' binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST' singleLogoutService: url: 'http://localhost/saml/logout' binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect' privateKey: ''
Die Informationen kann man hier ablesen, auch die vom Zertifikat:
Wenn man alles richtig konfiguriert hat, dann landet man beim Aufruf der Symfony Anwendung auf der Login Seite des IdP Providers und kann sich dort einloggen:
Die Logins lauten:
admin: secret user1: password user2: password
Dann sollte man sich mit seiner Symfony Applikation lokal über SAML einloggen und testen können.