Un fournisseur d'identité d'entreprise « SAML »

Cette rubrique fournit des informations sur les métadonnées d' SAML s et le mappage des attributs utilisateur nécessaires à la configuration d'un fournisseur d'identité SAML Enterprise.

SAML Il s'agit d'une norme XML permettant l'échange d'informations d'authentification unique entre un fournisseur d'identité, qui certifie l'identité de l'utilisateur, et un fournisseur de services, qui utilise ces informations d'identité. Par rapport à un fournisseur d'identité de type « Cloud Directory », un fournisseur d'identité d'entreprise de type « SAML » est plus complexe à configurer.

En tant que fournisseur de services, le fournisseur d'identité d'entreprise de l' SAML :
  1. Délègue IBM® Verify l'authentification à un fournisseur d'identité externe chargé d'authentifier les utilisateurs. Par exemple, Microsoft ADFS ou Microsoft Azure AD.
  2. Remplit un Verify jeton d'identification utilisateur avec les informations d'identité de l'utilisateur renvoyées.
La communication entre le fournisseur de services et le fournisseur d'identité repose sur des valeurs qui se trouvent dans les fichiers de métadonnées. Pour activer l'authentification unique d' SAML entre le fournisseur d'identité d' SAML Enterprise et le fournisseur d'identité externe, ce dernier doit :
  1. Fournissez le fichier de métadonnées du fournisseur d'identité SAML 2.0 au fournisseur d'identité d' SAML Enterprise.
  2. Récupérez le fichier de métadonnées du fournisseur de services « SAML » ( 2.0 ) auprès du fournisseur d'identité d'entreprise SAML.

Exigences des métadonnées SAML

  • Le contenu des fichiers de métadonnées fournisseur de services et fournisseur d'identité doit être conforme à la spécification SAML 2.0.
  • Le fichier de métadonnées du fournisseur d'identité doit contenir la clé publique de ce dernier afin de permettre au fournisseur d'identité d' SAML Enterprise de valider sa signature numérique. Les métadonnées de l' SAML doivent comporter un <KeyDescriptor> élément. Exemple d'un élément <KeyDescriptor> pour les clés de signature :
    <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>
    
  • Le fichier de métadonnées service provider doit contenir au moins un élément <md:KeyDescriptor use="signing">. Par exemple :
    <md:KeyDescriptor use="signing">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>(...signing certificate...)</X509Certificate>
            </X509Data>
          </KeyInfo>
    </md:KeyDescriptor>
    
  • Si le fournisseur d'identité d' SAML Enterprise utilise un certificat de racine ou un certificat d'autorité de certification intermédiaire interne, chaque certificat de la chaîne doit comporter une <X509Certificate> section. Par exemple :
    <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>
    
    Mettez à jour les <md:KeyDescriptor use="signing"> éléments et <md:KeyDescriptor use="encryption"> dans les métadonnées de l' SAML.
    Remarque : le certificat figurant dans <md:KeyDescriptor use="encryption"> l'élément du fichier de métadonnées du fournisseur de services peut être utilisé par le fournisseur d'identité externe SAML 2.0 pour chiffrer et envoyer les éléments d'assertion SAML2 à Verify.

SAML Mappage entre les assertions et Verify les jetons d'identification

Le fournisseur d'identité d'entreprise d' SAML utilise les informations d'identité de l'utilisateur contenues dans l 'assertion SAML pour remplir :
  • Le Verify jeton d'identification, qui représente un utilisateur Connect authentifié Verify .

    Il stocke l'identité de l'utilisateur et ses informations d'attributs.

  • Une requête « SAML » sortante vers l'application SaaS.
Tableau 1. SAML mappage entre les assertions et les jetons d'authentification
La valeur de cet élément d'assertion « SAML » est ajouté au Verify jeton d'authentification sous la forme
<saml:Subject><saml:NameID> preferred_username
<saml:Issuer> realmName, si realmName cette affirmation n'est pas explicitement incluse dans l 'assertion « SAML ».
Remarque : si <saml:Issuer> se présente sous la forme http(s) URL, le <hostname> contenu de l' URL est extrait et utilisé pour définir l'attribut realmName .

<saml:AttributeStatement>D'autres informations d'identification de l'utilisateur peuvent être incluses dans l 'assertion « SAML ». L'élément <saml:AttributeValue> prend en charge le type de données chaîne seulement.

Si l'élément <saml:Attribute Name> correspond à l'un des attributs standard suivants provenant du Verify répertoire cloud, cet attribut est ajouté au jeton Verify d'identification en tant qu'attribut standard portant le même nom :
  • preferred_username
  • given_name
  • family_name
  • name ou displayName
  • email ou emailAddress
  • groups ou groupIds
  • userID
  • realmName
  • mobile_number

Si les attributs <saml:Attribute Name> ne correspondent à aucun des attributs standard du répertoire Verify cloud, l'attribut est ajouté au Verify jeton d'identification en tant qu'attribut étendu. Les noms d'attributs étendus d'origine comportent le préfixe ext::.

Voici un exemple de réponse à une requête « SAML » dont l'assertion <saml:AttributeStatement> d'attributs contient les emailAddressattributs et mobile_number qui doivent être propagés vers le Verify jeton d'identification.
<?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>
L'objet JSON suivant est un exemple non normatif de l'ensemble des attributs d'un Verify jeton d'identification issu de la conversion de la réponse d'authentification fournie à titre d'exemple sur SAML. Cela montre comment l'identité et les attributs de l'utilisateur contenus dans l 'assertion « SAML » sont mappés dans le jeton d'authentification.
{
"preferred_username":"testuser",
"realmName": "idp.example.com",
"email":"testuser@idp.example.com",
"ext:mobileNumber": "01234556789"
}