Java >> Java Tutorial >  >> Java

SSO mit PingFederate unter Verwendung von SAML

Ping Federate ist ein Drittanbieter, der Funktionen für Single Sign-On (SSO) mit SAML- oder WS-Federation-Protokoll bereitstellt. Ich habe kürzlich an einem Projekt gearbeitet, bei dem wir Anwendungen diese Fähigkeiten zur Verfügung stellen mussten.

Hier dokumentiere ich, wie ich dies durch das SAML-Protokoll erreicht habe.

SAML steht für Security Assertion Markup Language und ist ein offenes Standard-Datenformat zum Austausch von Informationen im Zusammenhang mit Authentifizierung und Autorisierung (Quelle:Wikipedia – SAML). SAML wird hauptsächlich für Webbrowser-SSO verwendet.

Ping Federate spielt die Rolle eines Identitätsanbieters oder Dienstanbieters, je nachdem, für welchen Zweck Sie es verwenden.

In diesem speziellen Beitrag werden wir sehen, wie ein SP-initiiertes SSO mit Ping Federate funktioniert.

SSO mit Ping Federate-

Erstellen Sie eine SP-Verbindung in Ping Federate

Erstellen Sie zunächst eine eindeutige Verbindung für Ihren SP-Dienst in Ping Federate. Diese eindeutige Verbindung wird von Ping Federate mit der Entitäts-ID identifiziert, die Sie in Ping Federate erstellen. Geben Sie eine ACS-URL (Assertion Consumer Service) in Ihrer Verbindung in Ping Federate an. Grundsätzlich sendet Ping eine Antwort an die ACS-URL zurück. Es gibt einen schrittweisen Prozess zum Erstellen einer SP-Verbindung in Ping Federate.

Sie müssen ein Protokoll angeben, das für diese Verbindung verwendet werden soll. Für unsere Postzwecke verwenden wir SAML 2.0. Welche Art von Bindung kann verwendet werden? Post, Weiterleitung, Artefakt, SOAP. Für diesen Post verwenden wir Post oder Redirect.

Während des Prozesses stellen Sie auch einen IdP-Adapter in der Verbindung bereit. Der IdP-Adapter ist nichts anderes als die Art der Authentifizierung – wie soll ein Benutzer authentifiziert werden? Über ein HTML-Formular oder Windows-Konto?

Sie müssen auch ein Signaturzertifikat bereitstellen, wenn Sie eine signierte Anmeldeanforderung an Ping Federate senden.

Sobald Sie eine Verbindung erstellt haben, setzen Sie diese Verbindung in Ping auf AKTIV.

Änderungen auf SP-Seite

Wenn Sie jetzt eine Anmeldeanforderung an Ping senden, wird diese auf der Protokoll-Endpunkt-URL von der Ping-Seite veröffentlicht. Ping bietet also bestimmte statische Endpunkte für Ihre Verbindung. Wenn Ping auf einem Server namens abc.com installiert ist, lautet der Endpunkt für Ping abc.com/idp/SSO.saml2, und hier posten Sie Ihre Anmeldeanfrage. So sieht eine Beispiel-Login-Anfrage aus


<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_bec424fa533dj2ff020502892fghjjf221" Version="2.0" IssueInstant="2016-02-10T11:39:34Z" ForceAuthn="false" IsPassive="false" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="http://abc.bloodycoders.com/login/saml2/sp/AssertionConsumerService.php">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
urn:mace:bloodycoders.com:services:abc.bloodycoders.com
</saml:Issuer>
<samlp:NameIDPolicy xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" SPNameQualifier="abc.bloodycoders.com" AllowCreate="true" />
<samlp:RequestedAuthnContext xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Comparison="exact">
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
</samlp:AuthnRequest>

Ping Federate überprüft die Anfrage basierend auf der Entitäts-ID und dem Ort, an den die Antwort gesendet werden soll. Wenn die Anfrage gültig ist, wird eine Antwort gesendet. Auf der SP-Seite überprüfen Sie dann die Antwort, ob sie von einer authentischen Quelle stammt.

(Ich habe keine Antwort von Ping Federate für Post-Zwecke beigefügt).

Wenn Ihnen dieser Beitrag gefallen hat, senden Sie mir hier eine Antwort.


Java-Tag