Skip To Content

Konfiguracja aplikacji SimpleSAMLphp

Aplikację SimpleSAMLphp 1.10 i jej nowsze wersje można skonfigurować jako dostawcę tożsamości (IDP) umożliwiającego korzystanie z loginów korporacyjnych w witrynie Portal for ArcGIS. Proces konfiguracji obejmuje dwa główne etapy: rejestrację korporacyjnego dostawcy tożsamości w witrynie Portal for ArcGIS i rejestrację witryny Portal for ArcGIS dla korporacyjnego dostawcy tożsamości.

Podczas konfiguracji portalu można ewentualnie wprowadzić metadane dotyczące grup firmy w magazynie tożsamości. Umożliwi to tworzenie grup w portalu i tym samym wykorzystanie istniejących grup firmy w magazynie tożsamości. Za każdym razem, gdy członkowie grup logują się do portalu, dostęp do zasobów, elementów i danych jest kontrolowany przez zasady członkostwa zdefiniowane w grupie firmy. Grupy można tworzyć także bez podawania wymaganych metadanych grupy firmy. W takim przypadku zasady są określane przez witrynę Portal for ArcGIS, a nie przez magazyn tożsamości.

Wymagane informacje

W przypadku logowania użytkownika z wykorzystaniem loginu korporacyjnego witryna Portal for ArcGIS wymaga uzyskania określonych atrybutów od dostawcy tożsamości. NameID to niezbędny atrybut, który musi zostać przesłany przez dostawcę tożsamości w odpowiedzi protokołu SAML, aby integracja z witryną Portal for ArcGIS przebiegła pomyślnie. Podczas logowania użytkownika z IDP witryna Portal for ArcGIS utworzy nowego użytkownika o nazwie NameID w swoim magazynie użytkowników. Znaki dozwolone, z których może składać się wartość wysyłana przez atrybut NameID, to znaki alfanumeryczne, _ (podkreślenie), . (kropka) i @ (małpa). W nazwach użytkowników utworzonych przez witrynę Portal for ArcGIS wszystkie inne znaki zostaną zastąpione znakiem podkreślenia.

Witryna Portal for ArcGIS obsługuje przepływ atrybutów givenNameemail address loginu korporacyjnego od korporacyjnego dostawcy tożsamości. Gdy użytkownik loguje się za pomocą loginu korporacyjnego, a witryna Portal for ArcGIS otrzymuje atrybuty o nazwach givenname i email lub mail (wielkość liter nie ma znaczenia), witryna Portal for ArcGIS wypełnia imię i nazwisko oraz adres e-mail powiązane z kontem użytkownika wartościami otrzymanymi od dostawcy tożsamości. Zalecane jest przekazanie atrybutu email address od korporacyjnego dostawcy tożsamości, aby umożliwić użytkownikowi otrzymywanie powiadomień.

Rejestracja aplikacji SimpleSAMLphp jako korporacyjnego dostawcy tożsamości w witrynie Portal for ArcGIS

  1. Skonfiguruj źródło uwierzytelniania w dostawcy tożsamości SimpleSAMLphp.
    1. Utwórz źródło uwierzytelniania.

      Aplikacja SimpleSAMLphp obsługuje uwierzytelnianie użytkowników z różnych źródeł uwierzytelniania, takich jak serwer LDAP, użytkownicy serwera SQL, domena Active Directory itd. Poniższy przykład przedstawia, w jaki sposób skonfigurować program Apache Directory Server jako źródło uwierzytelniania w dostawcy tożsamości SimpleSAMLphp.

      Źródła uwierzytelniania można skonfigurować w pliku <SimpleSAML_HOME>/config/authsources.php. Aby skonfigurować serwer LDAP, otwórz plik config/authsources.php i dodaj źródło uwierzytelniania korzystające z protokołu LDAP w następującym formacie.

      '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 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',
      	),

      Witryna Portal for ArcGIS obsługuje przepływ atrybutów givenNameemail address loginu korporacyjnego od korporacyjnego dostawcy tożsamości. Gdy użytkownik loguje się za pomocą loginu korporacyjnego, a witryna Portal for ArcGIS otrzymuje atrybuty o nazwach givenname i email lub mail (wielkość liter nie ma znaczenia), witryna Portal for ArcGIS wypełnia imię i nazwisko oraz adres e-mail powiązane z kontem użytkownika wartościami otrzymanymi od dostawcy tożsamości.

      Zalecane jest przekazanie adresu e-mail otrzymanego od korporacyjnego dostawcy tożsamości do witryny Portal for ArcGIS. Jest to pomocne, gdy w późniejszym czasie użytkownik zostaje administratorem. Powiązanie konta z adresem e-mail umożliwia użytkownikowi otrzymywanie powiadomień dotyczących aktywności administracyjnej, a także wysyłanie do innych użytkowników zaproszeń do dołączenia do instytucji.

    2. Skonfiguruj utworzone wcześniej źródło uwierzytelniania jako moduł uwierzytelniania w dostawcy tożsamości SimpleSAMLphp. Otwórz plik metadata/ saml20-idp-hosted.php i dodaj źródło uwierzytelniania, które ma być używane.
      /*
      	 * Authentication source to use. Must be one that is configured in	 * 'config/authsources.php'.	 */
      	'auth' => 'example-ldapApacheDS',
  2. Skonfiguruj format identyfikatora nazw obsługiwany przez dostawcę tożsamości SimpleSAMLphp. Otwórz plik < SimpleSAML_HOME >/metadata/saml20-idp-hosted.php i dodaj poniższy ekstrakt. W poniższym przykładzie identyfikator użytkownika uid będzie przekazywany jako parametr NameID przez dostawcę tożsamości SimpleSAMLphp do witryny Portal for ArcGIS po uwierzytelnieniu użytkownika.
    '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',				  ),
    			),
  3. Zarejestruj dostawcę tożsamości SimpleSAMLphp dla swojej instytucji Portal for ArcGIS.
    1. Zaloguj się w witrynie portalu jako administrator instytucji i kliknij opcję Moja instytucja > Edytuj ustawienia > Zabezpieczenia.
    2. W sekcji Loginy korporacyjne kliknij przycisk Skonfiguruj dostawcę tożsamości i wpisz nazwę swojej instytucji w wyświetlonym oknie (na przykład City of Redlands). Gdy użytkownik uzyskuje dostęp do witryny portalu, nazwa instytucji jest wyświetlana jako jedna z opcji logowania za pomocą protokołu SAML (na przykład Konto City of Redlands).
      Notatka:

      Dla portalu można zarejestrować tylko jednego korporacyjnego dostawcę tożsamości.

    3. Zdecyduj, czy użytkownicy będą mogli przystępować do instytucji automatycznie czy po dodaniu ich kont do portalu. Wybór pierwszej opcji pozwala użytkownikowi logować się do instytucji z wykorzystaniem loginu korporacyjnego, bez konieczności jakiejkolwiek ingerencji ze strony administratora. Ich konta zostają zarejestrowane w instytucji automatycznie podczas pierwszego logowania. Druga opcja wiąże się z koniecznością zarejestrowania przez administratora odpowiedniego konta instytucji za pomocą narzędzia wiersza poleceń albo przykładu skryptu języka Python. Po zarejestrowaniu kont użytkownicy będą mogli zalogować się w instytucji.
      Wskazówka:

      Zaleca się, aby przynajmniej jedno konto firmowe wyznaczyć na konto administratora portalu oraz zmienić atrybuty początkowego konta administratora na niższe lub je usunąć. Powinno się także wyłączyć przycisk Utwórz konto oraz stronę logowania (signup.html) w witrynie portalu, aby użytkownicy nie mogli tworzyć własnych kont. Szczegółowe instrukcje można znaleźć w temacie Konfiguracja dostawców tożsamości zgodnych z protokołem SAML dla portalu.

    4. Podaj metadane dostawcy tożsamości, korzystając z jednej z trzech poniższych opcji:

      URL — wybierz tę opcję, jeśli adres URL metadanych integracji SimpleSAMLphp jest dostępny. Zwykle jest to https://<simpleSAML-server>/<saml-app-name>/saml2/idp/metadata.php.

      Notatka:

      Jeżeli korporacyjny dostawca tożsamości korzysta z certyfikatu z podpisem własnym, podczas podawania adresu URL metadanych protokołu HTTPS może wystąpić błąd. Przyczyną tego błędu jest fakt, że witryna Portal for ArcGIS nie może zweryfikować certyfikatu z podpisem własnym dostawcy tożsamości. Aby go uniknąć, możesz podać adres URL protokołu HTTP, skorzystać z jednej z innych opcji opisanych poniżej lub skonfigurować dla dostawcy tożsamości zaufany certyfikat.

      Plik — wybierz tę opcję, jeśli adres URL jest niedostępny. Zapisz metadane z adresu URL jako plik XML i prześlij go do witryny Portal for ArcGIS za pomocą opcji Plik.

      Parametry — wybierz tę opcję, jeśli adres URL lub plik jest niedostępny. Wprowadzając wartości ręcznie podaj wymagane parametry: adres URL logowania i certyfikat. Aby uzyskać te dane, skontaktuj się z administratorem aplikacji SimpleSAMLphp.

  4. Konfiguracja ustawień zaawansowanych (jeśli dotyczy):
    • Szyfruj potwierdzenie — zaznacz tę opcję, jeśli aplikacja SimpleSAMLphp zostanie skonfigurowana do szyfrowania odpowiedzi na potwierdzenia SAML.
    • Aktywuj żądanie podpisania — zaznacz tę opcję, aby witryna Portal for ArcGIS podpisywała żądanie uwierzytelnienia SAML wysyłane do aplikacji SimpleSAMLphp.
    • Identyfikator jednostki — zaktualizuj tę wartość, aby używać nowego identyfikatora jednostki do jednoznacznej identyfikacji swojego portalu w aplikacji SimpleSAMLphp.
    • Prześlij wylogowanie do dostawcy tożsamości — wybierz tę opcję, aby witryna Portal for ArcGIS używała Adresu URL wylogowania w celu wylogowania użytkownika z aplikacji SimpleSAMLphp. Wprowadź adres URL, który będzie używany w ustawieniu Adres URL wylogowania. Jeśli dostawca tożsamości wymaga podpisania Adresu URL wylogowania, opcja Aktywuj żądanie podpisania musi być zaznaczona.
    • Adres URL wylogowania — Adres URL dostawcy tożsamości używany do wylogowania bieżącego użytkownika. Adres URL wylogowania to zazwyczaj https://idphost.domain.com/simplesaml/saml2/idp/SingleLogoutService.php. Ten adres URL jest definiowany w elemencie SingleLogoutService w pliku metadanych dostawcy tożsamości. Adres URL pliku metadanych to zazwyczaj http://[simpleSAML-server]/simplesaml/saml2/idp/metadata.php.

    Ustawienia Szyfruj potwierdzenie i Aktywuj żądanie podpisania korzystają z certyfikatu samlcert w magazynie kluczy portalu. Aby użyć nowego certyfikatu, usuń certyfikat samlcert, utwórz nowy certyfikat z tym samym aliasem (samlcert) zgodnie z instrukcją Importuj certyfikat do portalu i ponownie uruchom portal.

  5. Ewentualnie wprowadź w konfiguracji portalu metadane dotyczące grup firmowych w magazynie tożsamości:
    1. Sign in to the ArcGIS Portal Directory as an administrator of your organization. The URL is in the format https://webadaptorhost.domain.com/webadaptorname/portaladmin.
    2. Click Security > Config > Update Identity Store.
    3. Place the group configuration JSON in the Group store configuration (in JSON format) text box.
      • If your identity store is Windows Active Directory, copy the following text and alter it to contain the information specific to your site:

        {
          "type": "WINDOWS",
          "properties": {
            "isPasswordEncrypted": "false",
            "userPassword": "secret",
            "user": "mydomain\\winaccount"
          }
        }

        In most cases, you will only need to alter values for the user and userPassword parameters. Although you type the password in clear text, it will be encrypted when stored in the portal's configuration directory or viewed. The account you use for the user parameter only needs permissions to look up the names of Windows groups on the network. If possible, use an account whose password does not expire.

      • If your identity store is LDAP, copy the following text and alter it to contain the information specific to your site:

        {
          "type": "LDAP",
          "properties": {
            "userPassword": "secret",
            "isPasswordEncrypted": "false",
            "user": "uid=admin,ou=system",
            "ldapURLForUsers": "ldaps://bar2:10636/ou=users,ou=ags,dc=example,dc=com",
            "ldapURLForRoles": "ldaps://bar2:10636/dc=example,dc=com",
            "usernameAttribute": "cn",
            "caseSensitive": "false",
            "userSearchAttribute": "cn",
            "memberAttributeInRoles": "member",
            "rolenameAttribute":"cn"
          }
        }

        In most cases, you'll only need to alter values for the user, userPassword, ldapURLForUsers, and ldapURLForRoles parameters. The URL to your LDAP will need to be provided by your LDAP administrator.

        In the above example, the LDAP URL refers to users within a specific OU (ou=users). If users exist in multiple OUs, the LDAP URL can point to a higher level OU or even the root level if needed. In that case, the URL would instead look like this:

        "ldapURLForUsers": "ldaps://bar2:10636/dc=example,dc=com",

        The account you use for the user parameter needs permissions to look up the names of groups in your organization. Although you type the password in clear text, it will be encrypted when stored in the portal's configuration directory or viewed.

        If your LDAP is configured to be case insensitive, set the caseSensitive parameter to false.

    4. When you finish entering the JSON for the user store configuration, click Update Configuration to save your changes and restart the portal.

Zarejestruj witrynę Portal for ArcGIS jako zaufanego usługodawcę w aplikacji SimpleSAMLphp

  1. Skonfiguruj witrynę Portal for ArcGIS jako zaufanego dostawcę usługi w aplikacji SimpleSAMLphp poprzez skonfigurowanie pliku <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php.
    1. Uzyskaj plik XML metadanych swojej instytucji w portalu Portal for ArcGIS.

      Aby uzyskać plik metadanych, zaloguj się jako administrator swojej instytucji i otwórz stronę instytucji. Kliknij przycisk Edytuj ustawienia, kliknij kartę Bezpieczeństwo, a następnie w sekcji Loginy korporacyjne kliknij przycisk Uzyskaj dostawcę tożsamości.

    2. Przekształć plik XML uzyskany w powyższym etapie podrzędnym do formatu PHP.

      Aplikacja SimpleSAMLphp wymaga, aby metadane usługodawcy były dostarczane w formacie PHP. SimpleSAMLphp zapewnia wbudowany konwerter metadanych z XML do PHP, który jest domyślnie dostępny jako https://<simpleSAML-server>/<saml-app-name>/admin/metadata-converter.php w ramach instalacji simpleSAMLphp. Użyj konwertera do przekształcenia pliku XML na plik PHP.

    3. Otwórz plik metatadata/saml20-sp-remote.php i dodaj konfigurację dostawcy usług w formacie PHP utworzoną w etapie 1.b powyżej.

      Poniżej znajduje się przykładowa konfiguracja dostawcy usługi dodana do pliku metadanych.

      /* 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 (  ),
      );
  2. Skonfiguruj atrybut, który będzie przekazywany jako parametr NameID do witryny Portal for ArcGIS przez dostawcę tożsamości SimpleSAMLphp po uwierzytelnieniu użytkownika. Aby to zrobić, dodaj ten atrybut na końcu konfiguracji dostawcy usługi dodanej w poprzednim etapie.

    W poniższym przykładzie identyfikator uid będzie przekazywany jako parametr NameID przez dostawcę tożsamości SimpleSAMLphp do witryny Portal for ArcGIS po uwierzytelnieniu użytkownika. (Zastąp element webadaptorhost.domain.com.webadaptorname adresem URL portalu).

    '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,
    );
  3. Jeśli wybrane zostało ustawienie zaawansowane Szyfruj potwierdzenia podczas rejestrowania aplikacji SimpleSAMLphp jako korporacyjnego dostawcy tożsamości, dodaj poniższy atrybut na końcu konfiguracji dostawcy usług dodanej w etapie 1.
    /*
      Whether assertions sent to this SP should be encrypted. The default value is FALSE.  */
      'assertion.encryption' => true,
    );