Erinnern Sie sich an Dagobert Duck? Er war der Onkel der berühmtesten und beliebtesten Figur – Donald Duck. Am bekanntesten ist er für seine Stapel glänzender, goldener Münzen, die sich in seinem Cartoon-Herrenhaus türmen.
Seine Lieblingsbeschäftigungen: Pfennige zählen, Gold zählen und in seinen Bergen von Geld herumschwimmen.
Wir können zwar nicht alle Dagobert Ducks unbegrenzten Reichtum haben, aber wir sind ihm in einigen wichtigen Punkten doch ähnlich. Unter anderem ist die Bewachung seines Reichtums in jeder Hinsicht eine davon.

Neue Technologien und Ansätze führen zu massiven Veränderungen, die die Art und Weise, wie Konsumenten und Unternehmen interagieren, für immer verändert haben. Zusätzlich zu diesen technologischen Veränderungen spielen unsere E-Mail-Konten und andere Social-Media-Aktivitäten eine ähnliche Rolle wie Dagobert Ducks Reichtümer. Und sich einzeln in diese Schätze einloggen zu müssen, ist etwas, dem wir ausweichen wollen.
Oder?
Hier ist also eine der vertrauenswürdigsten Anwendungen für Ihre Softwaresysteme.
Wir präsentieren Single Sign-On (SSO)
Single Sign-On (SSO) ist ein Sitzungs- und Benutzerauthentifizierungsdienst, der es einem Benutzer ermöglicht, einen einzigen Satz von Anmeldeinformationen (wie Name und Passwort) zu verwenden, um auf mehrere Anwendungen zuzugreifen. Im SSO-System bietet ein Drittanbieterdienst den Identifizierungs- und Autorisierungsmechanismus an und ist für die Information über die Benutzeridentität verantwortlich.
Diese Identifizierung und Autorisierung wird mit Hilfe von Federated Identity abgewickelt.
Federated Identity bezieht sich auf die Standards, Tools und Anwendungsfälle, die es den Benutzern ermöglichen, mit denselben Zugangsdaten auf mehrere Anwendungen zuzugreifen.

Die Frage ist nun: Wie werden die autorisierten Daten ausgetauscht?
Nun, Federated Identity kommt mit der OASIS Security Assertion Markup Language (SAML) Spezifikation (es können auch Open-Source-Technologien beteiligt sein). Diese Spezifikation hilft beim Standardaustausch von Daten zwischen der Sicherheitsdomäne, wobei der Schwerpunkt auf der Unterstützung von Folgendem liegt:
SAML 2.0 als Identity Provider: ist das System oder die Domäne, die die Benutzerauthentifizierung unterstützt und zugehörige Attribute hat. In SAML werden Identity Provider auch als SAML-Autoritäten und Asserting Parties bezeichnet.
SAML 2.0 als Service Provider: ist das System oder die administrative Domäne, die sich auf Informationen oder Daten verlässt, die vom Identity Provider geliefert werden.

Sicherheit und Datenschutz in SAML 2.0
Dieses Protokoll bringt von sich aus keine Sicherheit und ist in hohem Maße auf sichere Kommunikation (SSL und TLS) oder eine bereits bestehende Vertrauensbeziehung angewiesen, die typischerweise auch auf PKI oder asymmetrischer Kryptographie beruht.
Es stellt eine breite Palette von Sicherheitsmechanismen dar, um die Daten zu identifizieren und vor Angriffen zu schützen. Die Relying Party und die Asserting Party sollten eine bereits bestehende Vertrauensbeziehung haben, die typischerweise von einer Public Key Infrastructure (PKI) abhängt.
Wenn eine Partei eine Assertion von einer anderen Partei verlangt, ist eine bilaterale Authentifizierung erforderlich. Unter diesen sind SSL oder TLS die beiden, die mit der Verwaltung der gegenseitigen Authentifizierung oder der Authentifizierung über digitale Signaturen empfohlen werden.
In Bezug auf den Datenschutz fördert SAML 2.0 auch die Einrichtung von Pseudonymen zwischen einem Identity Provider und einem Service Provider. Die Authentifizierungskontextmechanismen ermöglichen es einem Benutzer, auf einem ausreichenden und gesicherten Niveau authentifiziert zu werden (angemessen für die Ressource, auf die beim Service Provider zugegriffen werden soll).

SimpleSAMLphp zur Implementierung der Standards von SAML 2.0
Was ist SimpleSAMLphp?
Es ist eine in PHP geschriebene Anwendung, die bei der Implementierung von SAML 2.0 hilft. SimpleSAMLphp ist eine wirklich einfache Möglichkeit, alle webbasierten PHP-Anwendungen in eine Föderation zu integrieren.
SimpleSAMLphp verwaltet alle Nicht-PHP-Szenarien mit dem Auth Memcookie-Ansatz (ein spezielles Cookie wird in Memcache hinzugefügt, das das Apache-Modul Auth MemCookie versteht).
Es bietet Unterstützung für die beiden Szenarien:
- SimpleSAMLphp als Service Provider
- SimpleSAMLphp als Identity Provider
Service Provider Szenario
Es ist wichtig für den Benutzer zu wissen, dass die Service Provider API mit grundlegenden Funktionen ausgestattet ist.
- Überprüfung, ob der Benutzer echt ist oder nicht
- Ob sie eine Authentifizierung benötigen oder nicht
- An- und Abmeldung
- Vorbereitung der Benutzerattribute
- Vorbereitung der URLs für die Anmeldung und Abmeldung.
Zur Authentifizierung verbindet sich SimpleSAMLphp mit einem Identity Provider (der leicht durch konfigurierte Dateien definiert werden kann). Dies geschieht, damit der Service Provider leicht so konfiguriert werden kann, dass er sich mit anderen Identity Providern verbindet, ohne etwas in der Webanwendung ändern zu müssen.
Wenn der Benutzer in der Webanwendung SimpleSAMLphp als Service Provider implementieren möchte, muss er Klassen hinzufügen, indem er die API verwendet. Sobald die Authentifizierung abgeschlossen ist, kann er leicht auf die Attribute des Benutzers zugreifen.
Identity Provider Szenario
Der Identity Provider in simpleSAMLphp ist so konfiguriert, dass er den Benutzer gegen verschiedene Ursprünge validiert - es kann statisch, LDAP, SQL, Radius, OpenID, Facebook und Twitter sein.
Für die Einrichtung des Identity Providers müssen Konfigurationsdateien geändert werden, damit das Authentifizierungsmodul verwendet und spezifiziert werden kann (mit zusätzlichen Informationen und der Liste der Service Provider). Wenn mehrere Service Provider denselben Identity Provider verwenden, um den Benutzer zu verifizieren, muss sich der Benutzer nur einmal anmelden. Dies geschieht, weil die Sitzungsinformationen vom Identity Provider gespeichert werden.
Der Identity Provider benötigt auch ein Zertifikat, damit die Identifizierung gegenüber dem Service Provider nachgewiesen werden kann.

Wie funktionieren Sitzungen in SimpleSAMLphp?
SimpleSAMLphp besteht aus einer Abstraktionsschicht für die Sitzungsverwaltung. Das bedeutet, dass es möglich ist, zwischen verschiedenen Arten von Sitzungsspeichern zu wählen sowie neue Sitzungsspeicher-Plugins zu schreiben.
Es gibt fünf Möglichkeiten, wie der Benutzer seine Sitzungen in SAML speichern kann. Die fünf Möglichkeiten sind:
PHP: Wenn der Benutzer den PHP-Sitzungshandler verwenden möchte, muss er die Konfigurationsoption store.type in config.php setzen. Er muss jedoch eines beachten: PHP erlaubt nicht, dass zwei Sitzungen gleichzeitig geöffnet sind.
Dies bedeutet, dass, wenn er PHP-Sitzungen verwendet, sowohl die Anwendung als auch SimpleSAMLphp gleichzeitig, er unterschiedliche Namen haben muss.
SQL: Um Sitzungen in einer SQL-Datenbank zu speichern, setzen Sie die Option store.type auf SQL. SimpleSAMLphp verwendet PDO (PHP-Objekte) beim Zugriff auf den Datenbankserver, so dass die Datenbankquelle mit Hilfe von DSN (Data Source Name) konfiguriert wird. Die erwarteten Tabellen werden automatisch generiert. Wenn der Benutzer die Daten von mehreren, aber separaten SimpleSAMLphp-Installationen in derselben Datenbank speichern möchte, kann er dies tun, indem er die Option store.sql.prefix verwendet, um Konflikte zu vermeiden.
Memcache: Um den Memcache-Sitzungshandler zu speichern, muss der Benutzer den Parameter store.type in config.php setzen. Memcache, das es ihnen ermöglicht, viele redundante Kopien von Sitzungen auf verschiedenen Memcache-Servern zu speichern. Jede Servergruppe ist ein Array der Server. Die Daten oder die Informationselemente werden zwischen allen Arten von Servern in jeder einzelnen Servergruppe per Load-Balancing verteilt.
Redis: Um Sitzungen in Redis zu speichern, muss der Benutzer die Option store.type auf redis setzen. Standardmäßig wird SimpleSAMLphp versuchen, Redis auf dem Localhost am Port 6379 zu kombinieren. Es wird dann mit Hilfe der Optionen store.redis.host und store.redis.port konfiguriert.
Ihr eigenes Plugin schreiben: In SimpleSAMLphp gibt es eine ausgezeichnete Open-Source-Community, und jede Art von Benutzer ist willkommen, sich anzuschließen. Die Foren sind für jeden offen, um Fragen zu stellen, Antworten zu geben, Verbesserungen zu erfragen oder mit Code oder Plugins von sich aus anzubieten.
Drupal im Bild
DrupalCamp 2018 sprach über das Drupal 8 Modul simpleSAMLphp. In der Sitzung ging es um die Installation und Konfiguration von SimpleSAMLphp als IDP und SP. Es wurde auch über die Integration von SimpleSAMLphp in Drupal 8 und die Erstellung eines SSO-Netzwerks gesprochen.
Das Drupal SimpleSAMLphp Modul ist eines der robustesten und stärksten Module. Es bietet eine umfassende und vollständige Implementierung von SAML in PHP.
Dieses Modul ermöglichte es Drupal nicht nur, mit SAML- oder Identitätsanbietern (IdP) zu kommunizieren, um Benutzer zu authentifizieren, sondern führte auch dazu, dass die Drupal-Site effektiv als SAML- oder Shibboleth-Dienstanbieter (SP) fungierte. Einige der Funktionen, die es bietet, sind:
- Das Modul bietet eine rechtzeitige Bereitstellung für die Konten des Drupal-Benutzers, die auf SAML-Attributen basieren.
- Es bietet eine automatische Rollenzuweisung, die auf SAML-Attributen basiert
- Der Dual-Modus im Modul führt die Benutzer gleichzeitig mit traditionellen Drupal-Konten und SAML-authentifizierten Konten.
- Es unterstützt mehrere Authentifizierungsprotokolle wie OpenID (z. B. Google, Yahoo), Facebook, OAuth (z. B. Twitter), Radius usw.
Fazit
SimpleSAMLphp ist sehr wertvoll und wichtig für die Ausführung eines SSO-Mechanismus in Webanwendungen. Es ist in nativem PHP entwickelt und pflegt die Integration zu allen SAML-Anbietern.
Ja, die Bibliothek ist sehr flexibel und wird mit vielen Authentifizierungsmodulen geliefert, und außerdem können sie leicht an Anwendungen von Drittanbietern angepasst werden.
Die Technologie ist vor allem mit dem Aufkommen von Konzepten wie Web 2.0 und der kontinuierlichen Entwicklung von Social-Network-Websites wie Facebook, MySpace und anderen sehr populär geworden.
Bei OpenSense Labs glauben wir, dass Sicherheit das wichtigste Anliegen jeder Organisation ist, und wir versuchen, ihnen Dienstleistungen anzubieten, die ihnen langfristig helfen. Kontaktieren Sie uns jetzt unter [email protected], unsere Fachleute werden Ihnen geeignete Antworten auf alle Ihre Fragen geben.
Abonnieren
Verwandte Blogs
Erkunden von Drupal Single Directory Components: Ein Wendepunkt für Entwickler

Webentwicklung lebt von Effizienz und Organisation, und Drupal, unser Lieblings-CMS, ist mit seiner neuesten Funktion hier,…
7 schnelle Schritte zur Erstellung von API-Dokumentationen mit Postman

Wenn Sie mit APIs arbeiten, kennen Sie wahrscheinlich bereits Postman, den beliebten REST Client, dem unzählige Entwickler…
Was ist der Product Engineering Life Cycle?

Stellen Sie sich vor, Sie bauen ein Haus ohne Bauplan oder Konstruktionszeichnungen. Es wäre schwierig, die Kosten und den…