Konfigurieren von SimpleSAMLphp 1.10
Sie können SimpleSAMLphp 1.10 als Identity-Provider für Enterprise-Anmeldenamen in ArcGIS Online konfigurieren. Die Konfiguration umfasst zwei Hauptschritte: die Registrierung des Enterprise-Identity-Providers bei ArcGIS Online und die Registrierung von ArcGIS Online beim Enterprise-Identity-Provider.
Schritt 1: Registrieren von SimpleSAMLphp als Enterprise-Identity-Provider bei ArcGIS Online
- 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 SSL/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 which should be used to create the users DN given the username. * %username% in this pattern will be replaced with the users 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 which 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', ),
ArcGIS Online unterstützt die Übernahme der Attribute givenName und email address des Enterprise-Anmeldenamens aus dem Enterprise-Identity-Provider in ArcGIS Online. Wenn sich ein Benutzer mit einem Enterprise-Anmeldenamen anmeldet und ArcGIS Online Attribute mit den Namen givenname und email oder mail (in beliebiger Groß-/Kleinschreibung) empfängt, gibt ArcGIS Online als vollständigen Namen und als E-Mail-Adresse des Benutzerkontos die vom Identity-Provider empfangenen Namen an.
Es empfiehlt sich, die E-Mail-Adresse vom Enterprise-Identity-Provider an ArcGIS Online weiterzugeben. Dies ist hilfreich, falls der Benutzer später zum Administrator wird. Wenn eine E-Mail-Adresse im Konto vorhanden ist, kann der Benutzer Benachrichtigungen zu administrativen Aktivitäten empfangen und Einladungen an andere Benutzer senden, um ihnen den Beitritt zur Organisation zu ermöglichen.
- 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 der Namenskennung.
Öffnen Sie die Datei < SimpleSAML_HOME >/metadata/saml20-idp-hosted.php, und fügen Sie das folgende Snippet hinzu. Im folgenden Beispiel wird die UID als NameID vom SimpleSAMLphp-IDP an ArcGIS Online 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 den SimpleSAMLphp-Identity-Provider für Ihre ArcGIS Online-Organisation.
- Überprüfen Sie, ob Sie angemeldet und Administrator Ihrer Organisation sind.
- Klicken Sie im oberen Bereich der Website auf die Schaltfläche Eigene Organisation. Ihre Organisationsseite wird geöffnet.
- Klicken Sie auf die Schaltfläche Einstellungen bearbeiten.
- Klicken Sie links auf der Seite auf den Link Sicherheit.
- Klicken Sie im Abschnitt Enterprise-Anmeldenamen auf die Schaltfläche Identity-Provider festlegen.
- Geben Sie in dem daraufhin angezeigten Fenster einen Namen für den Identity-Provider ein.
- Stellen Sie mithilfe einer der drei im Folgenden genannten 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.
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 ArcGIS Online hoch.
Parameter – Wählen Sie diese Option, wenn kein Zugriff auf die URL oder die Datei besteht. Geben Sie die Werte manuell ein, und stellen Sie die erforderlichen Parameter bereit: Anmelde-URL, Bindungstyp und Zertifikat. Wenden Sie sich an Ihren SimpleSAMLphp-Administrator, um diese Informationen zu erhalten.
Schritt 2: Registrieren von ArcGIS Online als vertrauenswürdigen Service-Provider bei SimpleSAMLphp
- Konfigurieren Sie ArcGIS Online als vertrauenswürdigen Service-Provider bei SimpleSAML, indem Sie die Datei <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php konfigurieren.
- Rufen Sie die XML-Metadatendatei Ihrer ArcGIS Online-Organisation ab.
Um die Metadatendatei abzurufen, melden Sie sich als Administrator bei der Organisation an, und öffnen Sie die Organisationsseite. Klicken Sie auf die Schaltfläche Einstellungen bearbeiten, die Registerkarte Sicherheit und im Abschnitt Enterprise-Anmeldenamen auf die Schaltfläche Service-Provider aufrufen.
- Konvertieren Sie die XML-Datei, die Sie im Schritt oben 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 2.1.b erstellten PHP-Format hinzu.
Nachfolgend wird ein Beispiel der hinzugefügten Konfiguration des Service-Providers in der Metadatendatei angezeigt.
/* The following is an AGOL organization service provider */ $metadata['citygis.maps.arcgis.com'] = array ( 'entityid' => ' citygis.maps.arcgis.com', 'name' => array ( 'en' => 'citygis ', ), 'description' => array ( 'en' => 'citygis ', ), 'OrganizationName' => array ( 'en' => 'citygis ', ), 'OrganizationDisplayName' => array ( 'en' => 'citygis ', ), 'url' => array ( 'en' => 'https://citygis.maps.arcgis.com', ), 'OrganizationURL' => array ( 'en' => 'https://citygis.maps.arcgis.com', ), 'contacts' => array ( ), 'metadata-set' => 'saml20-sp-remote', 'AssertionConsumerService' => array ( 0 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://citygis.maps.arcgis.com/sharing/rest/oauth2/saml/signin', 'index' => 1, ), 1 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://citygis.maps.arcgis.com/sharing/rest/oauth2/saml/signin', 'index' => 2, ), ), 'SingleLogoutService' => array ( ), );
- Rufen Sie die XML-Metadatendatei Ihrer ArcGIS Online-Organisation ab.
- Konfigurieren Sie das Attribut, das nach der Authentifizierung des Benutzers als NameID vom SimpleSAMLphp-IDP an ArcGIS Online weitergegeben wird.
Fügen Sie das Attribut am Ende der Konfiguration des Service-Providers ein, die Sie im vorherigen Schritt hinzugefügt haben.
Im folgenden Beispiel wird die UID als NameID vom SimpleSAMLphp-IDP an ArcGIS Online weitergegeben, nachdem der Benutzer authentifiziert wurde. (Ersetzen Sie "citygis.maps.arcgis.com" durch die URL der Organisation.)
/* The following is a remote AGOL organization service provider */ $metadata['citygis.maps.arcgis.com'] = array ( 'entityid' => ' citygis.maps.arcgis.com', 'name' => array ( 'en' => 'citygis ', ), 'description' => array ( 'en' => 'citygis ', ), 'OrganizationName' => array ( 'en' => 'citygis ', ), 'OrganizationDisplayName' => array ( 'en' => 'citygis ', ), 'url' => array ( 'en' => 'https://citygis.maps.arcgis.com', ), 'OrganizationURL' => array ( 'en' => 'https://citygis.maps.arcgis.com', ), 'contacts' => array ( ), 'metadata-set' => 'saml20-sp-remote', 'AssertionConsumerService' => array ( 0 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://citygis.maps.arcgis.com/sharing/rest/oauth2/saml/signin', 'index' => 1, ), 1 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://citygis.maps.arcgis.com/sharing/rest/oauth2/saml/signin', 'index' => 2, ), ), 'SingleLogoutService' => array ( ), 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'simplesaml.nameidattribute' => 'uid', ); /* The following indicates whether to send all the attributes received from the authentication source to the service provider or not. If true, it will send, otherwise it will not send all the attributes*/ 'simplesaml.attributes' => true,