Einrichtung eines Shibboleth Service Providers
Im Folgenden wird beschrieben, wie ein Shibboleth Service Provider eingerichtet werden kann, um eine SAML-Authentifizierung über einen am ArcGIS Portal konfigurierten Identity Provider zu ermöglichen.
|
Der hier beschriebene Workflow zur Installation und Konfiguration von Drittsoftware ist kein Teil des WebOffice Standardsupports. Gerne kann Sie das VertiGIS Professional-Services-Team bei Fragen kostenpflichtig unterstützen bzw. auch die Installation und Konfiguration übernehmen. |
Konzeptionelle Übersicht
Wird WebOffice auf die hier beschriebene Weise via SAML-Authentifizierung konfiguriert, so wird für den Einstieg in WebOffice-Projekte immer eine Session am Portal / IDP benötigt.
Sind keine entsprechenden Session-Header vorhanden, ist kein Zugriff auf ein WebOffice-Projekt möglich.

In dem Fall wird WebOffice den User zur Authentifizierung zum Portal for ArcGIS weiterleiten.
WebOffice authentifiziert sich gegenüber Portal for ArcGIS bzw. ArcGIS Server über Oauth.
Portal for ArcGIS sieht, dass keine Session vorhanden ist, und leitet den User zur Authentifizierung an den Identity Provider weiter, wo sich der User einloggen kann.

Ist der Login am Identity Provider erfolgreich, so wird dieser die Userinformationen an den Service Provider zurückschicken. Die Userattribute werden mittels dem konfigurierten Mapping in HTTP Header umgemappt.
Anhand von diesen Headern und den in der UMDB konfigurierten entsprechenden Gruppeneinschränkungen bzw. -Berechtigungen wird festgestellt, ob der User auf das Projekt, den Hauptkartendienst und die übrigen Kartendienste zugriff hat.
Wenn dies gewährleistet ist, kann der User auf das WebOffice-Projekt zugreifen.
Die Header bleiben in der Session gespeichert. Sobald der User erneut ein WebOffice-Projekt öffnet, erkennt der WebOffice-Anwendungsserver die verfügbaren Header und es ist keine erneute Authentifizierung erforderlich.

Installation und Konfiguration von Shibboleth
Zur Einrichtung eines Shibboleth Service Providers sind mehrere Schritte notwendig.
Unter folgender URL kann die letztverfügbare Version des Shibboleth Service Providers heruntergeladen werden:
https://shibboleth.net/downloads/service-provider/latest/win64/
Nach erfolgreicher Installation ist ein Neustart des Rechners erforderlich.
Nach der Installation kann im Browser durch Aufruf von https://localhost/Shibboleth.sso/Status getestet werden, ob die Installation korrekt erfolgt ist - in dem Fall wird der Status OK zurückgegeben.
Die Metadaten können via https://localhost/Shibboleth.sso/Metadata heruntergeladen und als .xml-Datei gespeichert werden. Diese müssen am Identity Provider hinterlegt werden.
Anschließend ist die <Shibboleth-SP>\etc\shibboleth\shibboleth2.xml zu öffnen und folgende Anpassungen vorzunehmen:
•Im Attribut SPConfig > InProcess > ISAPI > Site muss die Eigenschaft name auf den externen Rechnernahmen gesetzt werden
•Im Attribut SPConfig > RequestMapper > RequestMap > Host muss name ebenfalls auf den externen Rechnernamen gesetzt werden
•Im Attribut SPConfig > RequestMapper > RequestMap > Host > Path muss name auf den WebOffice-Anwendungsnamen gesetzt werden
•Im Attribut SPConfig > ApplicationDefaults ist die entityID auf https://[EXTERNER-Servername.Domäne]/shibboleth anzupassen
•Im Attribut SPConfig > ApplicationDefaults > Sessions > SSO ist die entityID des IdP einzutragen.
•Im Attribut SPConfig > ApplicationDefaults > Sessions > Logout ist SAML2 Local zu ändern auf SAML2.
•Im Attribut SPConfig > ApplicationDefaults > Sessions > Handler mit type="Session" ist showAttributeValues auf true zu setzen.
•Im Attribut SPConfig > ApplicationDefaults > Errors > Handler kann der Parameter supportContact auf eine geeignete Mailadresse geändert werden.
•Im Attribut SPConfig > ApplicationDefaults ist MetadataProvider auszukommentieren und der Pfad zum Metadaten-XML entsprechend anzugeben.
•Im Attribut SPConfig > ApplicationDefaults > AttributeExtractor ist folgende Konfiguration statt der bestehenden einzutragen:
<AttributeExtractor type="Chaining">
<AttributeExtractor type="Assertion AuthnInstant="HTTP_AUTHENTICATE_TIME />
Außerdem ist die <Shibboleth-SP>\etc\shibboleth\attribute-map.xml zu öffnen.
Grundsätzlich können alle aufgeführten Attribute gelöscht und die benötigten Attribute eingetragen werden, z.B.:
<Attribute name="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified id="AUTHENTICATE_NAMEID">
<AttributeDecoder xsi:type="NameIDAttributeDecoder formatter="$NameQualifier!$SPNameQualifier!$Name defaultQualifiers="true"/>
</Attribute>
<Attribute name="urn:oid:2.5.4.42 id="AUTHENTICATE_GIVENNAME">
<AttributeDecoder xsi:type="StringAttributeDecoder caseSensitive="false"/>
</Attribute>
<Attribute name="urn:oid:2.5.4.4 id="AUTHENTICATE_PRINCIPALNAME">
<AttributeDecoder xsi:type="StringAttributeDecoder caseSensitive="false"/>
</Attribute>
<Attribute name="urn:oid:0.9.2342.19200300.100.1.3 id="AUTHENTICATE_MAIL">
<AttributeDecoder xsi:type="StringAttributeDecoder caseSensitive="false"/>
</Attribute>
<Attribute name="urn:oid:2.16.840.1.113719.1.1.4.1.25 id="AUTHORIZE_ROLES">
<AttributeDecoder xsi:type="StringAttributeDecoder caseSensitive="false"/>
</Attribute>

Im IIS ist auf der Default Web Site zu prüfen, ob die ISAPI_shib.dll unter ISAPI-Filter aufgeführt ist, ansonsten manuell ergänzen.

Nach diesen Anpassungen müssen der Shibboleth-Service sowie der IIS neu gestartet werden.
Erstellen der Files in der WebOffice-Anwendung
Anschließend sind in der WebOffice-Anwendung die beiden Dateien login_shibboleth.jsp und logout_shibboleth.jsp zu erstellen (z.B. C:\Tomcat\webapps\WebOffice\login_shibboleth.jsp).
Die login_shibboleth.jsp ist mit folgendem Inhalt zu befüllen:
<%@page import="com.mysynergis.core.controller.jsp.JspUtilAuth"%>
<%@page import="com.mysynergis.core.util.http.servlet.HttpRequestWrapper"%>
<%@page contentType="text/html; charset=UTF-8 pageEncoding="UTF-8 %>
<%
// the shibboleth handler to be used for login
String handlerUrlPvp = https://[EXTERNER-Servername.Domäne]/Shibboleth.sso";
String loginChoicePvp = JspUtilAuth.getShibbolethLoginWithPvpLoginTarget(handlerUrlPvp, HttpRequestWrapper.fromRequest(request));
// this will directly send the 302 redirect to the shibboleth login
response.sendRedirect(loginChoicePvp);
%>
|
Hierbei unbedingt die handlerUrlPvp anpassen! |
Die logout_shibboleth.jsp ist mit folgendem Inhalt zu befüllen:
<%@page contentType="text/html; charset=UTF-8 pageEncoding="UTF-8 %>
<%
// JSP called from AUTHENTICATION_PVP >>> e.g.: portal_url_logout="<https://[EXTERNER-Servername.Domäne]/wO_application>/logout_shibboleth_iis.jsp"
// this will directly send the 302 redirect to the shibboleth logout
response.sendRedirect("https://[EXTERNER-Servername.Domäne]/Shibboleth.sso/Logout);
%>
|
Hierbei unbedingt den Parameter für response.sendRedirect anpassen! |
Anpassungen in der Anwendungskonfiguration
Im WebOffice author standalone in der Anwendungskonfiguration muss das UserManagement aktiviert werden und Portalverbundprotokoll als Authentifizierungstyp ausgewählt werden.
Das Benutzerattribut und das Rollenattribut sind entsprechend der übergebenen Attribute zu befüllen.
Als Portalseite muss das erstellte Login_shibboleth.jsp angegeben werden.
Als Logoutseite standardmäßig https://[EXTERNER-Servername.Domäne/Shibboleht.sso/Logout]
Nur Rolleninformation verwenden muss zwingend True sein.
Außerdem kann der Unterknoten Portal Session Headers hinzugefügt werden, um in weiteren Unterknoten die übrigen, in der Attribute Map festgelegten Attribute einzutragen.

|
Im Portal for ArcGIS muss eine Anwendung «WebOffice» angelegt werden, siehe WebOffice mit ArcGIS Enterprise (Portal for ArcGIS) und SSO Authentifizierung. |