Sie können SimpleSAMLphp 1.10 und höhere Versionen als IDP für SAML-Anmeldungen in Portal for ArcGIS konfigurieren. Die Konfiguration umfasst zwei Hauptschritte: die Registrierung des SAML-IDPs bei Portal for ArcGIS und die Registrierung von Portal for ArcGIS beim SAML-IDP.
Hinweis:
Um sicherzustellen, dass die SAML-Anmeldenamen sicher konfiguriert werden, informieren Sie sich über die Best Practices für die SAML-Sicherheit.
Erforderliche Informationen
Portal for ArcGIS erfordert das Empfangen bestimmter Attributinformationen vom Identity-Provider, wenn ein Benutzer sich mit SAML-Anmeldenamen anmeldet. Das Attribut NameID ist ein erforderliches Attribut, das von Ihrem Identity-Provider in der SAML-Antwort gesendet werden muss, damit der Verbund mit Portal for ArcGIS hergestellt werden kann. Da Portal for ArcGIS einen Named User anhand des Wertes NameID eindeutig identifiziert, empfiehlt sich die Verwendung eines konstanten Wertes zur eindeutigen Identifizierung des Benutzers. Wenn sich ein Benutzer des IDP anmeldet, erstellt Portal for ArcGIS im eigenen Benutzerspeicher einen neuen Benutzer mit dem Benutzernamen NameID. Die zulässigen Zeichen für den von NameID gesendeten Wert sind alphanumerische Zeichen, _ (Unterstrich), . (Punkt) und @ (At-Zeichen). Für alle anderen Zeichen werden Escapezeichen verwendet, sodass der von Portal for ArcGIS erstellte Benutzername stattdessen Unterstriche enthält.
Portal for ArcGIS unterstützt die Übernahme der E-Mail-Adresse, der Gruppenmitgliedschaften, des angegebenen Namens und des Nachnamens eines Benutzers vom SAML-Identity-Provider.
Registrieren von SimpleSAMLphp als SAML-IDP bei Portal for ArcGIS
- Konfigurieren Sie eine Authentifizierungsquelle im SimpleSAMLphp-IDP.
- Erstellen Sie eine Authentifizierungsquelle.
SimpleSAMLphp unterstützt die Authentifizierung von Benutzern aus verschiedenen Authentifizierungsquellen, z. B. LDAP-Server, Benutzer in einem SQL-Server, einer Active-Directory-Domäne usw. Das folgende Beispiel zeigt die Konfiguration eines Apache Directory Server als Authentifizierungsquelle im SimpleSAMLphp-IDP.
Authentifizierungsquellen können in der Datei <SimpleSAML_HOME>/config/authsources.php konfiguriert werden. Um den LDAP-Server zu konfigurieren, öffnen Sie die Datei config/authsources.php, und fügen Sie eine LDAP-basierte Authentifizierungsquelle im folgenden Format hinzu:
'example-ldapApacheDS' => array( 'ldap:LDAP', /* The hostname of the LDAP server. */ 'hostname' => 'host:port', /* Whether TLS should be used when contacting the LDAP server. */ 'enable_tls' => TRUE, /* * Which attributes should be retrieved from the LDAP server. * This can be an array of attribute names, or NULL, in which case * all attributes are fetched. */ 'attributes' => NULL, /* * The pattern that should be used to create the users DN given the username. * %username% in this pattern will be replaced with the user's username. * * This option is not used if the search.enable option is set to TRUE. */ 'dnpattern' => 'uid=%username%,ou=users,ou=system', /* * As an alternative to specifying a pattern for the users DN, it is possible to * search for the username in a set of attributes. This is enabled by this option. */ 'search.enable' => FALSE, /* * The DN that will be used as a base for the search. * This can be a single string, in which case only that DN is searched, or an * array of strings, in which case they will be searched in the order given. */ 'search.base' => 'ou=users,ou=system', /* * The attribute(s) the username should match against. * * This is an array with one or more attribute names. Any of the attributes in * the array may match the value the username. */ 'search.attributes' => array('uid', 'mail'), /* * The username & password the simpleSAMLphp should bind to before searching. If * this is left as NULL, no bind will be performed before searching. */ 'search.username' => 'uid=admin,ou=system', 'search.password' => 'password', ),
- Konfigurieren Sie die oben erstellte Authentifizierungsquelle als Authentifizierungsmodul im SimpleSAMLphp-IDP. Öffnen Sie die Datei metadata/ saml20-idp-hosted.php, und fügen Sie die Authentifizierungsquelle hinzu, die verwendet werden soll.
/* * Authentication source to use. Must be one that is configured in * 'config/authsources.php'. */ 'auth' => 'example-ldapApacheDS',
- Erstellen Sie eine Authentifizierungsquelle.
- Konfigurieren Sie das vom SimpleSAMLphp-IDP unterstützte Format für die Namenskennung. Öffnen Sie die Datei < SimpleSAML_HOME >/metadata/saml20-idp-hosted.php, und fügen Sie das folgende Snippet hinzu. Im folgenden Beispiel wird uid als NameID vom SimpleSAMLphp-IDP an Portal for ArcGIS weitergegeben, nachdem der Benutzer authentifiziert wurde.
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'authproc' => array( 3 => array( 'class' => 'saml:AttributeNameID', 'attribute' => 'uid', 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', ), ),
- Registrieren Sie SimpleSAMLphp als IDP für Ihre Portal for ArcGIS-Organisation.
- Überprüfen Sie, ob Sie als Administrator Ihrer Organisation angemeldet sind.
- Klicken Sie im oberen Bereich der Seite auf Organisation und dann auf die Registerkarte Einstellungen.
- Klicken Sie links auf der Seite auf Sicherheit.
- Klicken Sie im Abschnitt Anmeldungen auf die Schaltfläche SAML-Anmeldung einrichten und wählen Sie die Option Ein Identity-Provider aus. Geben Sie auf der Seite Eigenschaften angeben den Namen der Organisation ein (z. B. City of Redlands). Wenn Benutzer auf die Website der Organisation zugreifen, wird dieser Text als Teil der SAML-Anmeldeoption angezeigt (z. B. Mit City of Redlands -Konto).
Hinweis:
Sie können nur einen SAML-Identity-Provider (IDP) oder einen Verbund von IDPs für Ihr Portal registrieren.
- Legen Sie fest, ob Benutzer der Organisation Automatisch oder Auf Einladung eines Administrators beitreten können. Durch Auswahl der ersten Option können sich Benutzer mit ihrem SAML-Anmeldenamen bei der Organisation anmelden, ohne dass ein Administrator eingreifen muss. Deren Konto wird bei der ersten Anmeldung automatisch bei der Organisation registriert. Die zweite Option erfordert, dass der Administrator die erforderlichen Konten mit einem Befehlszeilendienstprogramm oder Beispiel-Python-Skript beim Portal registrieren. Nachdem die Konten registriert wurden, können Benutzer sich bei der Organisation anmelden.
Tipp:
Es wird empfohlen, mindestens ein SAML-Konto als Administrator des Portals festzulegen und das initiale Administratorkonto herabzustufen oder zu löschen. Zudem sollten Sie die Schaltfläche Konto erstellen auf der Portal-Website deaktivieren, damit Benutzer keine eigenen Konten erstellen können. Vollständige Anweisungen finden Sie unter Konfigurieren eines SAML-kompatiblen Identity Providers mit dem Portal.
- Stellen Sie mithilfe einer der folgenden drei Optionen Metadateninformationen für den Identity-Provider bereit:
URL: Wählen Sie diese Option, wenn Zugriff auf die URL der SimpleSAMLphp-Verbundmetadaten besteht. Diese lautet in der Regel https://<simpleSAML-server>/<saml-app-name>/saml2/idp/metadata.php.
Hinweis:
Wenn Ihr SAML-Identity-Provider ein selbstsigniertes Zertifikat beinhaltet, kann ein Fehler auftreten, wenn Sie versuchen, die HTTPS-URL der Metadaten anzugeben. Dieser Fehler tritt auf, da Portal for ArcGIS das selbstsignierte Zertifikat des Identity-Providers nicht überprüfen kann. Verwenden Sie alternativ HTTP in der URL, eine der Optionen unten, oder konfigurieren Sie Ihren Identity-Provider mit einem vertrauenswürdigen Zertifikat.
Datei: Wählen Sie diese Option, wenn kein Zugriff auf die URL besteht. Speichern Sie die Metadaten aus der URL als XML-Datei, und laden Sie die Datei über die Option Datei in Portal for ArcGIS hoch.
Hier angegebene Parameter: Wählen Sie diese Option, wenn kein Zugriff auf die URL oder die Verbundmetadatendatei besteht. Geben Sie die Werte manuell ein, und stellen Sie die angeforderten Parameter bereit: die Anmelde-URL und das Zertifikat, codiert im Base64-Format. Wenden Sie sich an Ihren SimpleSAMLphp-Administrator, um diese Informationen zu erhalten.
- Konfigurieren Sie die erweiterten Einstellungen je nach Bedarf:
- Assertion verschlüsseln: Aktivieren Sie diese Option, wenn SimpleSAMLphp zur Verschlüsselung von Antworten auf SAML-Assertionen konfiguriert wird.
- Signierte Anforderung aktivieren: Aktivieren Sie diese Option, wenn Portal for ArcGIS die an SimpleSAMLphp gesendete SAML-Authentifizierungsanforderung signieren soll.
- Entitäts-ID: Aktualisieren Sie diesen Wert, wenn für die eindeutige Identifizierung Ihres Portals bei SimpleSAMLphp eine neue Entitäts-ID verwendet werden soll.
- Abmeldung an Identity-Provider propagieren: Aktivieren Sie diese Option, damit Portal for ArcGIS eine Abmelde-URL verwendet, um den Benutzer von SimpleSAMLphp abzumelden. Geben Sie die URL ein, die in der Einstellung Abmelde-URL verwendet werden soll. Wenn der IDP eine Signierung der Abmelde-URL erfordert, muss die Option Signierte Anforderung aktivieren aktiviert sein.
- Profile beim Anmelden aktualisieren: Aktivieren Sie diese Option, wenn ArcGIS Enterprise die Attribute givenName und email address der Benutzer aktualisieren soll, falls diese sich seit der letzten Anmeldung geändert haben.
- SAML-basierte Gruppenmitgliedschaft aktivieren: Aktivieren Sie diese Option, damit Mitglieder der Organisation bestimmte SAML-basierte Enterprise-Gruppen während der Gruppenerstellung mit ArcGIS Enterprise-Gruppen verknüpfen können.
- Abmelde-URL: Die URL des Identity Providers, die zum Abmelden des aktuell angemeldeten Benutzers verwendet werden soll. Die Abmelde-URL lautet in der Regel https://idphost.domain.com/simplesaml/saml2/idp/SingleLogoutService.php. Diese URL ist im Element SingleLogoutService in der IDP-Metadatendatei definiert. Die URL der Metadatendatei lautet üblicherweise https://[simpleSAML-server]/simplesaml/saml2/idp/metadata.php.
Die Einstellungen Assertion verschlüsseln und Signierte Anforderung aktivieren verwenden das Zertifikat samlcert im Keystore des Portals. Um ein neues Zertifikat zu verwenden, löschen Sie das Zertifikat samlcert, erstellen Sie ein Zertifikat mit demselben Alias (samlcert), führen Sie die Schritte unter Importieren eines Zertifikats in das Portal aus, und starten Sie das Portal neu.
- Klicken Sie auf Speichern.
Registrieren von Portal for ArcGIS als vertrauenswürdiger Service-Provider bei SimpleSAMLphp
- Konfigurieren Sie Portal for ArcGIS als vertrauenswürdigen Service-Provider bei SimpleSAMLphp, indem Sie die Datei <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php konfigurieren.
- Rufen Sie die XML-Metadatendatei Ihrer Portal for ArcGIS-Organisation ab.
Um die Metadatendatei abzurufen, melden Sie sich als Administrator bei der Organisation an, und öffnen Sie die Organisationsseite. Klicken Sie auf die Registerkarte Einstellungen und dann links auf der Seite auf Sicherheit. Klicken Sie im Abschnitt Anmeldungen unter SAML-Anmeldung auf die Schaltfläche Service-Provider-Metadaten herunterladen.
- Konvertieren Sie die XML-Datei, die Sie im vorherigen Unterschritt erhalten haben, in das PHP-Format.
Bei SimpleSAMLphp müssen die Metadateninformationen des Service-Providers im PHP-Format vorliegen. SimpleSAMLphp enthält ein integriertes Metadaten-Konvertierungsprogramm von XML in PHP, das standardmäßig unter https://<simpleSAML-server>/<saml-app-name>/admin/metadata-converter.php in der SimpleSAMLphp-Installation verfügbar ist. Konvertieren Sie die XML-Struktur damit in das PHP-Format.
- Öffnen Sie die Datei metatadata/saml20-sp-remote.php, und fügen Sie die Konfiguration des Service-Providers in dem in Schritt 1.b oben erstellten PHP-Format hinzu.
Nachfolgend wird ein Beispiel der hinzugefügten Konfiguration des Service-Providers in der Metadatendatei angezeigt.
/* The following is a Portal for ArcGIS organization service provider */ $metadata['webadaptorhost.domain.com.webadaptorname'] = array ( 'entityid' => ' webadaptorhost.domain.com.webadaptorname', 'name' => array ( 'en' => 'portal ', ), 'description' => array ( 'en' => 'portal ', ), 'OrganizationName' => array ( 'en' => 'portal ', ), 'OrganizationDisplayName' => array ( 'en' => 'portal ', ), 'url' => array ( 'en' => 'https://webadaptorhost.domain.com/webadaptorname', ), 'OrganizationURL' => array ( 'en' => 'https://webadaptorhost.domain.com/webadaptorname', ), 'contacts' => array ( ), 'metadata-set' => 'saml20-sp-remote', 'AssertionConsumerService' => array ( 0 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin', 'index' => 1, ), 1 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin', 'index' => 2, ), ), 'SingleLogoutService' => array ( ), );
- Rufen Sie die XML-Metadatendatei Ihrer Portal for ArcGIS-Organisation ab.
- Konfigurieren Sie das Attribut, das nach der Authentifizierung des Benutzers als NameID vom SimpleSAMLphp-IDP an Portal for ArcGIS weitergegeben wird. Fügen Sie dazu das Attribut am Ende der Konfiguration des Service-Providers ein, die Sie im vorherigen Schritt hinzugefügt haben.
Im folgenden Beispiel wird uid als NameID vom SimpleSAMLphp-IDP an Portal for ArcGIS weitergegeben, nachdem der Benutzer authentifiziert wurde. (Ersetzen Sie webadaptorhost.domain.com.webadaptorname durch die URL Ihres Portals.)
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'simplesaml.nameidattribute' => 'uid', /* The following indicates whether or not to send all the attributes received from the authentication source to the service provider. If true, it will send, otherwise it will not send all the attributes*/ 'simplesaml.attributes' => true, );
- Wenn Sie bei der Registrierung von SimpleSAMLphp als SAML-Identity-Provider die erweiterte Einstellung Assertion verschlüsseln gewählt haben, fügen Sie das unten stehende Attribut an das Ende der Konfiguration des Service-Providers an, die Sie in Schritt 1 hinzugefügt haben.
/* Whether assertions sent to this SP should be encrypted. The default value is FALSE. */ 'assertion.encryption' => true, );