Configurar SimpleSAMLphp

SimpleSAMLphp es un proveedor de identidad (IDP) compatible con Security Assertion Markup Language (SAML). Es posible configurar SimpleSAMLphp 1.10 y versiones posteriores como su IDP para los inicios de sesión SAML en ArcGIS Online. El proceso de configuración consta de dos pasos principales: registrar su IDP SAML con ArcGIS Online y registrar ArcGIS Online con el IDP SAML.

Nota:

Para asegurarse de que los inicios de sesión SAML estén configurados de forma segura, revise las prácticas recomendadas de seguridad para SAML.

Información requerida

ArcGIS Online requiere recibir cierta información sobre atributos desde el IDP cuando un usuario se conecta con inicios de sesión SAML. El atributo NameID es obligatorio y su IDP debe enviarlo en la respuesta SAML para que la federación con ArcGIS Online funcione. Dado que ArcGIS Online utiliza el valor de NameID para identificar de forma única un usuario nominal, se recomienda utilizar un valor constante que identifique al usuario de forma única. Cuando un usuario de IDP inicia sesión, ArcGIS Online crea un nuevo usuario con el nombre de usuario NameID_<url_key_for_org> en su almacén de usuarios. Los caracteres permitidos para el valor enviado por NameID son alfanuméricos, _ (guion bajo), . (punto) y @ (arroba). Para los demás caracteres del nombre de usuario creado por ArcGIS Online, se agregará un carácter de escape con guion bajo.

ArcGIS Online admite el flujo de entrada de una dirección de correo electrónico, pertenencias a grupos y un nombre y apellidos determinados de un usuario desde el proveedor de identidad SAML. Se recomienda que proporcione la dirección de correo electrónico del IDP SAML para que el usuario pueda recibir notificaciones. Esto es de utilidad si el usuario se convierte posteriormente en administrador. Disponer de una dirección de correo electrónico en la cuenta permite al usuario recibir notificaciones sobre cualquier actividad administrativa y enviar invitaciones a otros usuarios para que se unan a la organización.

Registrar SimpleSAMLphp como IDP SAML con ArcGIS Online

  1. Configure un origen de autenticación en el IDP SimpleSAMLphp.
    1. Cree un origen de autenticación.

      SimpleSAMLphp permite la autenticación de usuarios desde diversos orígenes de autenticación como servidor LDAP, usuarios en un servidor SQL y dominio de Active Directory, entre otros. El siguiente ejemplo muestra cómo configurar un servidor del directorio Apache como origen de autenticación en el IDP SimpleSAMLphp.

      Los orígenes de autenticación se pueden configurar en el archivo <SimpleSAML_HOME>/config/authsources.php. Para configurar el servidor LDAP, abra el archivo config/authsources.php y agregue un origen de autenticación basado en LDAP con el siguiente formato:

      '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',
      	),
    2. Configure el origen de autenticación que creó anteriormente como módulo de autenticación en el IDP SimpleSAMLphp. Abra el archivo metadata/ saml20-idp-hosted.php y agregue el origen de autenticación que se va a utilizar.
      /*
      	 * Authentication source to use. Must be one that is configured in
      	 * 'config/authsources.php'.
      	 */
      	'auth' => 'example-ldapApacheDS',
  2. Configure el formato de identificador de nombre compatible con el IDP SimpleSAMLphp. Abra el archivo < SimpleSAML_HOME >/metadata/saml20-idp-hosted.php y agregue el siguiente fragmento. En el siguiente ejemplo, se transferirá uid como NameID mediante el IDP SimpleSAMLphp a ArcGIS Online después de autenticar al usuario.
    '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. Registre SimpleSAMLphp como IDP para su organización de ArcGIS Online.
    1. Compruebe que haya iniciado sesión como administrador de su organización.
    2. En la parte superior del sitio, haga clic en Organización y haga clic en la pestaña Configuración.
    3. Haga clic en Seguridad en el lado izquierdo de la página.
    4. En la sección Inicios de sesión, haga clic en el botón Nuevo inicio de sesión de SAML y seleccione la opción Un proveedor de identidad. En la página Especificar propiedades, introduzca el nombre de su organización (por ejemplo, City of Redlands). Cuando los usuarios acceden al sitio web de la organización, este texto se muestra como parte de la opción de inicio de sesión SAML (por ejemplo, Usar su cuenta de City of Redlands).
      Nota:

      Seleccionar la opción Un proveedor de entidad le permite registrar un IDP SAML para su organización ArcGIS Online. Para autentificar usuarios con inicios de sesión SAML para varios IDP, registre una federación basada enSAML en lugar de un solo IDP.

    5. Elija si los usuarios pueden unirse a la organización automáticamente o si reciben una invitación de un administrador. Al seleccionar la primera opción, los usuarios pueden iniciar sesión en la organización con su inicio de sesión SAML sin que intervenga ningún administrador; su cuenta se registra con la organización automáticamente la primera vez que inician sesión. La segunda opción requiere que el administrador invite a los usuarios necesarios a la organización. Una vez que el usuario recibe la invitación, puede iniciar sesión en la organización.
    6. Proporcione la información de metadatos del IDP con una de las tres opciones siguientes:

      URL: elija esta opción si es posible acceder a la URL de los metadatos de la federación SimpleSAMLphp. Normalmente, es https://<simpleSAML-server>/<saml-app-name>/saml2/idp/metadata.php.

      Archivo: elija esta opción si la dirección URL no es accesible. Guarda los metadatos de la URL como un archivo XML y carga el archivo en ArcGIS Online usando la opción Archivo.

      Parámetros especificados aquí: elija esta opción si no se puede acceder a la URL o al archivo de metadatos de federación. Introduzca manualmente los valores y proporcione los parámetros solicitados: URL de inicio de sesión y certificado, con codificación en formato BASE 64. Póngase en contacto con su administrador de SimpleSAMLphp para obtenerlos.

  4. Configure los ajustes avanzados cuando proceda:
    • Cifrar aserción: habilite esta opción si SimpleSAMLphp se configurará para cifrar las respuestas de la aserción SAML.
    • Habilitar solicitud firmada: habilite esta opción para que ArcGIS Online firme la solicitud de autenticación SAML enviada a SimpleSAMLphp.
    • Id. de entidad: actualice este valor para usar un nuevo Id. de entidad para identificar de forma única su organización de ArcGIS Online en SimpleSAMLphp.
    • Propagar cierre de sesión a proveedor de identidad: habilite esta opción para que ArcGIS Online utilice una URL de cierre de sesión para cerrar la sesión del usuario de SimpleSAMLphp. Introduzca la dirección URL que desee utilizar en la configuración de la Dirección URL de cierre de sesión. Si el IDP requiere que la URL de cierre de sesión esté firmada, es necesario que Habilitar solicitud firmada esté activada.
    • Actualizar perfiles en el inicio de sesión: habilite esta opción para sincronizar automáticamente la información de la cuenta (nombre completo y dirección de correo electrónico) almacenada en los perfiles de usuario de ArcGIS Online con la información de cuenta más reciente recibida desde el IDP. Al habilitar esta opción, cuando un usuario inicia sesión con credenciales SAML su organización puede verificar si la información del IDP ha cambiado desde que la cuenta se creó y, si es así, actualizar el perfil de la cuenta de ArcGIS Online del usuario en consecuencia.
    • Habilitar pertenencia a grupos basada en SAML: habilite esta opción para permitir a los miembros de la organización vincular grupos basados en SAML especificados con grupos de ArcGIS Online durante el proceso de creación de grupos.
    • URL de cierre de sesión: la dirección URL del IDP que se debe utilizar para cerrar la sesión del usuario conectado. La dirección URL de cierre de sesión suele ser https://idphost.domain.com/simplesaml/saml2/idp/SingleLogoutService.php. Esta dirección URL se define en el elemento SingleLogoutService del archivo de metadatos del IDP. La dirección URL del archivo de metadatos suele ser https://[simpleSAML-server]/simplesaml/saml2/idp/metadata.php.
  5. Haga clic en Guardar.

Registrar ArcGIS Online como proveedor de servicios de confianza en SimpleSAMLphp

  1. Configure ArcGIS Online como proveedor de servicios de confianza en SimpleSAMLphp configurando el archivo <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php.
    1. Obtenga el archivo XML de metadatos de su organización de ArcGIS Online.

      Para obtener el archivo de metadatos, inicie sesión como administrador de su organización y abra la página de la organización. Haga clic en la pestaña Configuración y haga clic en Seguridad en el lado izquierdo de la página. En la sección Inicios de sesión, en Inicio de sesión SAML, haga clic en el botón Descargar metadatos de proveedores de servicios.

    2. Convierta el archivo XML que ha obtenido en el subpaso anterior al formato PHP.

      SimpleSAMLphp espera que la información de metadatos del proveedor de servicios se proporcione en formato PHP. SimpleSAMLphp proporciona un convertidor integrado de metadatos XML a PHP que, de manera predeterminada, está disponible como https://<simpleSAML-server>/<saml-app-name>/admin/metadata-converter.php en la instalación de SimpleSAMLphp. Use el conversor para convertir el XML a PHP.

    3. Abra el archivo metatadata/saml20-sp-remote.php y agregue la configuración del proveedor de servicios en formato PHP que se ha creado en el paso 1.b. anterior.

      A continuación, hay un ejemplo de la configuración del proveedor de servicio agregado en el archivo de metadatos.

      /* The following is an ArcGIS Online 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:HTTPS-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:HTTPS-Redirect',
            'Location' => 'https://citygis.maps.arcgis.com/sharing/rest/oauth2/saml/signin',
            'index' => 2,
          ),
        ),
        'SingleLogoutService' =>
        array (
        ),
      );
  2. Configure el atributo que se transfiere como NameID a ArcGIS Online desde el IdP SimpleSAMLphp después de autenticar al usuario. Para ello, agregue el atributo al final de la configuración del proveedor de servicios que ha agregado en el paso anterior.

    En el siguiente ejemplo, el IDP uid transferirá NameID como SimpleSAMLphp a ArcGIS Online tras la autenticación del usuario. (Reemplace citygis.maps.arcgis.com con la URL de su organización).

    '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. Si ha elegido la configuración avanzada Cifrar aserción al registrar SimpleSAMLphp como el IDP SAML agregue el atributo siguiente al final de la configuración del proveedor de servicios que ha agregado en el paso 1.
    /*
      Whether assertions sent to this SP should be encrypted. The default value is FALSE.
      */
      'assertion.encryption' => true,
    );