Un proveedor de identidades de SAML

En este tema se ofrece información sobre los metadatos de « SAML » y la asignación de atributos de usuario necesarios para configurar un proveedor de identidades de « SAML Enterprise».

SAML es un estándar XML para el intercambio de información de inicio de sesión único entre un proveedor de identidad, que verifica la identidad del usuario, y un proveedor de servicios, que utiliza dicha información. En comparación con un proveedor de identidades de Cloud Directory, un proveedor de identidades de Enterprise SAML es más complicado de configurar.

Como proveedor de servicios, el proveedor de identidades de « SAML Enterprise»:
  1. Delega IBM® Verify la autenticación a un proveedor de identidad externo que se encarga de autenticar a los usuarios. Por ejemplo, Microsoft ADFS o Microsoft Azure AD.
  2. Rellena un Verify token de credenciales de usuario con la información de identidad del usuario devuelta.
La comunicación entre el proveedor de servicios y el proveedor de identidades se basa en valores contenidos en archivos de metadatos. Para habilitar el inicio de sesión único de SAML entre el proveedor de identidades de SAML Enterprise y el proveedor de identidades externo, este último debe:
  1. Proporcione el archivo de metadatos del proveedor de identidades SAML 2.0 al proveedor de identidades de SAML Enterprise.
  2. Obtenga el archivo de metadatos del proveedor de servicios « SAML » ( 2.0 ) del proveedor de identidades de SAML Enterprise.

Requisitos de metadatos de SAML

  • El contenido de los dos archivos de metadatos del proveedor de servicios y proveedor de identidades deben estar de acuerdo con la especificación de SAML 2.0.
  • El archivo de metadatos del proveedor de identidades debe contener la clave pública de dicho proveedor para que el proveedor de identidades de SAML Enterprise pueda validar su firma digital. Los metadatos de « SAML » deben incluir un <KeyDescriptor> elemento. Ejemplo de un elemento <KeyDescriptor> para claves de firma:
    <md:KeyDescriptor use="signing">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>idp.example.com SSO key</X509Certificate>
            </X509Data>
          </KeyInfo>
    </md:KeyDescriptor>
    
  • El archivo de metadatos del proveedor de servicios debe contener como mínimo un elemento <md:KeyDescriptor use="signing">. Por ejemplo:
    <md:KeyDescriptor use="signing">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>(...signing certificate...)</X509Certificate>
            </X509Data>
          </KeyInfo>
    </md:KeyDescriptor>
    
  • Si el proveedor de identidades de SAML Enterprise utiliza un certificado de CA raíz o intermedio interno, cada certificado de la cadena debe incluir una <X509Certificate> estrofa. Por ejemplo:
    <KeyDescriptor use="signing">    
         <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>...root CA base64 encoded public certificate...</X509Certificate>
              <X509Certificate>...intermediate CA base64 encoded public certificate...</X509Certificate>
              <X509Certificate>...signer base64 encoded public certificate ...</X509Certificate>
            </X509Data> 
         </KeyInfo> 
    </KeyDescriptor>
    
    Actualiza los <md:KeyDescriptor use="signing"> elementos y <md:KeyDescriptor use="encryption"> en los metadatos de « SAML ».
    Nota: El certificado incluido en el <md:KeyDescriptor use="encryption"> elemento del archivo de metadatos del proveedor de servicios puede ser utilizado por el proveedor de identidades externo SAML 2.0 para cifrar y enviar los elementos de aserción SAML2 a Verify.

SAML Asignación de tokens de credenciales y Verify de afirmaciones

El proveedor de identidades de « SAML Enterprise» utiliza la información de identidad del usuario incluida en la aserción « SAML » para rellenar:
  • La señal de credencial de Verify, que representa un usuario autenticado de Verify Connect.

    Almacena la identidad del usuario y la información de sus atributos.

  • Una solicitud saliente de SAML dirigida a la aplicación SaaS.
Tabla 1. SAML Asignación de tokens de credenciales y afirmaciones
El valor de este elemento de afirmación « SAML » Se añade a la señal de credencial de Verify como
<saml:Subject><saml:NameID> preferred_username
<saml:Issuer> realmName, si realmName la afirmación no se incluye explícitamente en la declaración « SAML ».
Nota: Si <saml:Issuer> tiene el formato http(s) URL, se extrae el <hostname> de URL y se utiliza para establecer el realmName atributo.

<saml:AttributeStatement>En la aserción « SAML » se puede incluir otra información sobre la identidad del usuario. El elemento <saml:AttributeValue> solo soporta el tipo de datos de serie.

Si el <saml:Attribute Name> corresponde a uno de los siguientes atributos estándar del directorio Verify en la nube, dicho atributo se añade al token Verify de credenciales como un atributo estándar con el mismo nombre:
  • preferred_username
  • given_name
  • family_name
  • name o displayName
  • email o emailAddress
  • groups o groupIds
  • userID
  • realmName
  • mobile_number

Si los <saml:Attribute Name> atributos no se corresponden con ninguno de los atributos estándar del directorio Verify en la nube, el atributo se añade al Verify token de credenciales como un atributo ampliado. Los atributos ampliados tienen un prefijo ext:: en los nombres de atributos originales.

A continuación se muestra un ejemplo de una respuesta de « SAML » cuya afirmación <saml:AttributeStatement> de atributos contiene los atributos emailAddressy mobile_number que se propagarán al token Verify de credenciales.
<?xml version="1.0"?>
<samlp:Response xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
      xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      ID="FIMRSP_549f7c46-014a-195f-b377-f24678dbf88a" 
      IssueInstant="2014-12-16T19:42:25Z" Version="2.0">
  <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
  </samlp:Status>
  <saml:Assertion ID="Assertion-uuid549f74ad-014a-120d-a67b-f24678dbf88a" 
      IssueInstant="2014-12-16T19:42:23Z" Version="2.0">
    <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">
         https://idp.example.com/SAML</saml:Issuer>
    <saml:Subject>
      <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">testuser
          </saml:NameID>
      <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
        <saml:SubjectConfirmationData NotOnOrAfter="2014-12-16T19:43:23Z" 
             Recipient="https://sp.iam.ibmcloud.com/SAML"/>
      </saml:SubjectConfirmation>
    </saml:Subject>
    <saml:Conditions NotBefore="2014-12-16T19:41:23Z" NotOnOrAfter="2014-12-16T19:43:23Z">
      <saml:AudienceRestriction>
        <saml:Audience>https://sp.iam.ibmcloud.com/SAML</saml:Audience>
      </saml:AudienceRestriction>
    </saml:Conditions>
    <saml:AuthnStatement AuthnInstant="2014-12-16T19:42:23Z" 
           SessionIndex="uuid549ad19a-014a-1451-8e4d-998e0731058a" 
           SessionNotOnOrAfter="2014-12-16T20:42:21Z">
      <saml:AuthnContext>
        <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password
            </saml:AuthnContextClassRef>
      </saml:AuthnContext>
    </saml:AuthnStatement>
    <saml:AttributeStatement>
      <saml:Attribute Name="emailAddress" 
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
        <saml:AttributeValue xsi:type="xs:string">testuser@idp.example.com</saml:AttributeValue>
      </saml:Attribute>
      <saml:Attribute Name="mobile_number" 
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
        <saml:AttributeValue xsi:type="xs:string">01234556789</saml:AttributeValue>
      </saml:Attribute>    
    </saml:AttributeStatement>
  </saml:Assertion>
</samlp:Response>
El siguiente objeto JSON es un ejemplo no normativo del conjunto de atributos de un Verify token de credenciales obtenido a partir de la respuesta de autenticación de ejemplo de SAML. Ilustra cómo se asignan la identidad y los atributos del usuario, incluidos en la aserción « SAML », en el token de credenciales.
{
"preferred_username":"testuser",
"realmName": "idp.example.com",
"email":"testuser@idp.example.com",
"ext:mobileNumber": "01234556789"
}