Cette rubrique explique comment configurer l'authentification SAML sur une instance Blackboard Learn avec Active Directory Federation Services (ADFS) en tant que fournisseur d'identité (IdP). Votre environnement Blackboard Learn agit en tant que fournisseur de services. Bien que ces étapes utilisent ADFS version 3.0 avec Windows Server 2012 R2, les étapes peuvent également être appliquées à ADFS 2.0.

Fournisseur de services Learn

  1. Connectez-vous à Blackboard Learn en tant qu'administrateur et naviguez jusqu'à Administrateur système > Authentification.
  2. Sélectionnez Créer un fournisseur > SAML.
  3. Saisissez les paramètres suivants :
    • Nom > Type ADFS SAML ou valeur de votre choix.
    • Fournisseur d'authentification > associé à la valeur Inactif.
    • Méthode de recherche des utilisateurs > Nom d'utilisateur
    • Restreindre par nom d'hôte > Utiliser ce fournisseur pour les noms d'hôtes.
    • Texte du lien > Type ADFS SAML ou valeur de votre choix.
  4. Sélectionnez Enregistrer et configurer.
  5. Dans le champ ID d'entité, assurez-vous que la valeur est la même que celle de URL ACS.
  6. Sous Métadonnées du fournisseur de services, sélectionnez Générer et enregistrez le fichier sur votre ordinateur de bureau.
  7. Il est recommandé de créer une nouvelle source de données, intitulée SAML pour ce fournisseur. Il est également possible d'utiliser SYSTEM ou une valeur de votre choix.
  8. Cochez la case Activer le provisionnement JIT pour permettre au système de créer automatiquement un compte lorsqu'un utilisateur inconnu tente de se connecter via ce fournisseur d'authentification SAML. Si vous ne cochez pas cette case, le compte utilisateur devra d'abord être créé manuellement dans Blackboard Learn.
  9. Dans la liste Sources de données compatibles, assurez-vous de sélectionner les sources de données avec lesquelles le fournisseur d'authentification doit être compatible.
  10. Sélectionnez Fournisseur d'identité de point comme Type de fournisseur d'identité.
  11. Pour Paramètres du fournisseur d'identité, le fichier XML de métadonnées pour ADFS inclut des éléments incompatibles avec SAML 2.0. Avant de télécharger les métadonnées, vous devez les modifier pour supprimer les éléments incompatibles.
    1. L'emplacement par défaut des métadonnées pour une fédération ADFS est https://[ADFS server hostname]/FederationMetadata/2007-06/FederationMetadata.xml
    2. Téléchargez le fichier et ouvrez-le dans un éditeur de texte. Supprimez avec soin la section qui commence par <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"&gt; ... </X509Data></KeyInfo> et se termine par </ds:Signature>.

      <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
       <ds:SignedInfo>
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
        <ds:Reference URI="#_43879f32-9a91-4862-bc87-e98b85b51158">
         <ds:Transforms>
          <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
         </ds:Transforms>
         <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
         <ds:DigestValue>z1H1[SNIP]jaYM=</ds:DigestValue>
        </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue&gt; FVj[SNIP]edrfNKWvsvk5A==
        </ds:SignatureValue>
        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
         <X509Data>
          <X509Certificate>
          FDdd[SNIP]qTNKdk5F/vf1AocDaX
          </X509Certificate>
         </X509Data>
        </KeyInfo>
      </ds:Signature>

    3. Téléchargez le fichier XML des métadonnées mises à jour dans Blackboard Learn.
  12. À la section Mapper les attributs SAML, utilisez le nom du compte SAML comme ID utilisateur distant.
  13. Sélectionnez Soumettre.

Fournisseur d'identité ADFS

  1. Sur le serveur ADFS, accédez à la console de gestion ADFS.
  2. Accédez à Trust Relationships > Relying Party Trusts > Add Relying Party Trust (Relations d’approbation > Approbations de partie de confiance > Ajouter une approbation de partie de confiance).
  3. Sélectionnez Start (Démarrer) sur la page Add Relying Party Trust Wizard (Assistant Ajouter une approbation de partie de confiance).
  4. Sélectionnez Import Data about the relying party from a file (Importer des données sur la partie de confiance à partir d'un fichier).
  5. Sélectionnez Browse (Parcourir) et téléchargez le fichier créé à l'étape 6 de la section Learn SP. Sélectionnez Suivant.
  6. Saisissez un nom d'affichage comme yourlearnserver.blackboard.com, puis sélectionnez Next (Suivant).
  7. Sélectionnez I do not want to configure multi-factor authentication settings (Je ne veux pas configurer les paramètres d'authentification MFA), puis sélectionnez Next (Suivant).
  8. Sélectionnez Permit All Users to Access this Relying Party (Permettre à tous les utilisateurs d'accéder à cette partie de confiance), puis sélectionnez Next (Suivant).
  9. Sélectionnez Next (Suivant) à l'étape Ready to Add Trust (Prêt à ajouter une approbation), puis Close (Fermer) à l'étape Finish (Terminer).
  10. Une fois l'approbation de partie de confiance créée, la boîte de dialogue Edit Claims Rules (Modifier les règles de revendication) s'affiche si la dernière case est encore cochée. Sinon, cliquez avec le bouton droit de la souris sur l'icône Approbation de partie de confiance, puis sélectionnez Edit Claims (Modifier les revendications).

Ajouter des règles de revendication pour une approbation de partie de confiance

Envoyer des attributs sous forme de revendications

L'ajout de règles de revendication pour l'approbation de partie de confiance envoie les attributs LDAP en tant que revendications du serveur ADFS à Blackboard Learn. Sur la console de gestion ADFS, cliquez avec le bouton droit de la souris sur l'approbation de partie de confiance.

Envoyer le nom de l'utilisateur

  1. Sur l'onglet Issuance Transform Rules (Règles de transformation d'émission), sélectionnez Add Rule (Ajouter une règle).
  2. Sur la page Select Rule Template (Sélectionner un modèle de règle), sélectionnez Send LDAP Attributes as Claims (Envoyer les attributs LDAP sous forme de revendications) comme modèle de règle de revendication (Claim rule template), puis sélectionnez Next (Suivant).
  3. Sur la page Configure Rule (Configurer la règle), dans la zone Claim rule name (Nom de la règle de revendication), saisissez Transform Username to NameID (Transformer le nom d'utilisateur en ID de nom).
  4. Dans la liste déroulante Attribute Store (Magasin d'attributs), sélectionnez Active Directory.
  5. Dans la zone Mapping (Mappage) de gauche, sélectionnez SAM-Account-Name (Nom-Compte-SAM) ou Company (Société).
  6. Dans la zone Mapping (Mappage) de droite, saisissez SamAccountName (NomCompteSam), puis sélectionnez Finish (Terminer).

Envoyer le nom et le prénom (facultatif)

Si l'option Provisionnement JIT est sélectionnée sur la page Paramètres d'authentification SAML de Blackboard Learn, ce qui signifie que les comptes utilisateurs seront créés dans Blackboard Learn s'ils n'existent pas, les attributs LDAP Prénom et Nom peuvent également être envoyés d'ADFS à Blackboard Learn en mappant les attributs.

  1. Sur l'onglet Issuance Transform Rules (Règles de transformation d'émission), sélectionnez Add Rule (Ajouter une règle).
  2. Sur la page Select Rule Template (Sélectionner un modèle de règle), sélectionnez Send LDAP Attributes as Claims (Envoyer les attributs LDAP sous forme de revendications) comme modèle de règle de revendication (Claim rule template), puis sélectionnez Next (Suivant).
  3. Sur la page Configure Rule (Configurer la règle), dans la zone Claim rule name (Nom de la règle de revendication) , saisissez Send First Name (Envoyer le prénom).
  4. Dans la liste déroulante Attribute Store (Magasin d'attributs), sélectionnez Active Directory.
  5. Dans la zone Mapping (Mappage) de gauche, sélectionnez Given-Name (Nom-Attribué).
  6. Dans la zone Mapping (Mappage) de droite, saisissez urn:oid:2.5.4.42, puis sélectionnez Finish (Terminer).
  7. Sur l'onglet Issuance Transform Rules (Règles de transformation d'émission), sélectionnez Add Rule (Ajouter une règle).
  8. Sur la page Select Rule Template (Sélectionner un modèle de règle), sélectionnez Send LDAP Attributes as Claims (Envoyer les attributs LDAP sous forme de revendications) comme modèle de règle de revendication (Claim rule template), puis sélectionnez Next (Suivant).
  9. Sur la page Configure Rule (Configurer la règle), dans la zone Claim rule name (Nom de la règle de revendication), saisissez Send Last Name (Envoyer le nom).
  10. Dans la liste déroulante Attribute Store (Magasin d'attributs), sélectionnez Active Directory.
  11. Dans la zone Mapping (Mappage) de gauche, sélectionnez Surname (Surnom).
  12. Dans la zone Mapping (Mappage) de droite, saisissez urn:oid:2.5.4.4, puis sélectionnez Finish (Terminer).

Transformer une revendication entrante

  1. Sélectionnez Add Rule (Ajouter une règle).
  2. Sur la page Select Rule Template (Sélectionner un modèle de règle), sélectionnez Transform an Incoming Claim (Transformer une revendication entrante) comme modèle de règle de revendication (Claim rule template), puis sélectionnez Next (Suivant).
  3. Sur la page Configurer la règle, dans la zone Nom de la règle de revendication, saisissez Transformer l’e-mail dans ID de nom.
  4. Le type de revendication entrante (Incoming claim type) doit être SamAccountName (NomCompteSam). Il doit correspondre au type de revendication sortante (Outgoing Claim Type) créé dans la règle précédente.
  5. La valeur de Outgoing claim type (Type de revendication sortante) est Name ID (Code de nom).
  6. La valeur de Outgoing name ID format (Format de code de nom sortant) est Unspecified (Non spécifié).
  7. Vérifiez que l’option Pass through all claim values (Transmettre toutes les valeurs des revendications) est sélectionnée, puis sélectionnez Finish (Terminer).
  8. Cliquez une première fois sur OK pour enregistrer la règle, puis une seconde fois pour terminer les mappages d'attributs.

Exemple d'instruction d'attribut

Une fois toutes les règles de revendication précédentes ajoutées pour l'approbation de partie de confiance (Relying Party Trust), les règles apparaissent dans l'onglet Issuance Transform Rules (Règles de transformation d'émission).

Les éléments Subject (Objet) et AttributeStatement similaires à ceux qui suivent seront envoyés dans SAML POST de l’ADFS à Blackboard Learn une fois l’utilisateur authentifié :

<Subject>
    <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified ">luke.skywalker</NameID>
    [SNIP]
</Subject>
 
<AttributeStatement>
    <Attribute Name="SamAccountName">
        <AttributeValue>luke.skywalker</AttributeValue>
    </Attribute>
    <Attribute Name="urn:oid:2.5.4.42">
        <AttributeValue>Luke</AttributeValue>
    </Attribute>
    <Attribute Name="urn:oid:2.5.4.4">
        <AttributeValue>Skywalker</AttributeValue>
    </Attribute>
</AttributeStatement>

Si les attributs du fournisseur d'identité ne sont pas chiffrés dans la réponse SAML, le module complémentaire SAML Tracer du navigateur Firefox ou le module complémentaire SAML Message Decoder du navigateur Chrome permet de visualiser les attributs qui sont émis par le fournisseur d'identité et envoyés à Blackboard Learn pendant le processus d'authentification.


Configurer ADFS en vue de l'utilisation de SHA-1

  1. Accédez au panneau de configuration de l'administrateur.
  2. Sous Building Blocks, sélectionnez Building Blocks.
  3. Sélectionnez Outils installés.
  4. Situez Fournisseur d'authentification - SAML dans la liste. Ouvrez le menu et sélectionnez Paramètres.
  5. Sous Paramètres d'algorithme de signature, sélectionnez SHA-1dans la liste. Lorsque vous avez sélectionné le type d'algorithme de signature, redémarrez le Building Block SAML pour appliquer les nouveaux paramètres.
  6. Sélectionnez Soumettre pour enregistrer vos modifications.

Autre configuration ADFS importante

Par défaut, ADFS chiffre les attributs envoyés en utilisant l'algorithme AES-256. Le runtime Java utilisé par Blackboard Learn ne prend pas en charge l'algorithme AES-256. Un utilisateur ne pourra pas se connecter via l'authentification SAML et les messages d'erreur suivants relatifs à SAML apparaîtront dans les journaux.

Dans /usr/local/blackboard/logs/bb-services-log.txt :

2016-10-26 13:16:51 -0400 - unsuccessfulAuthentication - org.springframework.security.authentication.AuthenticationServiceException: Error validating SAML message
        at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:100)
        at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:167)
        at org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:87)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:217)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:184)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
 [SNIP]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.opensaml.common.SAMLException: Response doesn't have any valid assertion which would pass subject validation
        at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:229)
        at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:87)
        ... 229 more

Dans /usr/local/blackboard/logs/tomcat/catalina-log.txt :

ERROR 2016-10-26 13:16:51,519 connector-38: userId={unset id}, sessionId=85DC3851365512EE96AABFBB8E5A519C org.opensaml.xml.encryption.Decrypter - Error decrypting the encrypted data element
org.apache.xml.security.encryption.XMLEncryptionException: Illegal key size
Original Exception was java.security.InvalidKeyException: Illegal key size
    at org.apache.xml.security.encryption.XMLCipher.decryptToByteArray(XMLCipher.java:1822)
    at org.opensaml.xml.encryption.Decrypter.decryptDataToDOM(Decrypter.java:596)
    at org.opensaml.xml.encryption.Decrypter.decryptUsingResolvedEncryptedKey(Decrypter.java:795)
    at org.opensaml.xml.encryption.Decrypter.decryptDataToDOM(Decrypter.java:535)
    at org.opensaml.xml.encryption.Decrypter.decryptDataToList(Decrypter.java:453)
    at org.opensaml.xml.encryption.Decrypter.decryptData(Decrypter.java:414)
    at org.opensaml.saml2.encryption.Decrypter.decryptData(Decrypter.java:141)
    at org.opensaml.saml2.encryption.Decrypter.decrypt(Decrypter.java:69)
    at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:199)
    at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:87)
    [SNIP]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.security.InvalidKeyException: Illegal key size
    at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039)
    at javax.crypto.Cipher.init(Cipher.java:1393)
    at javax.crypto.Cipher.init(Cipher.java:1327)
    at org.apache.xml.security.encryption.XMLCipher.decryptToByteArray(XMLCipher.java:1820)
    ... 238 more

Comme la configuration du back-end SaaS Blackboard Learn n'est généralement pas prise en charge, une solution consiste à ouvrir un PowerShell sur le serveur ADFS et à régler le programme de confiance créé pour Blackboard Learn afin d'envoyer les attributs sous une forme non chiffrée. Comme la communication s'appuie entièrement sur SSL, cette opération ne réduira pas la sécurité de l'authentification. Elle facilite également le débogage de tous les problèmes, car les attributs peuvent être visualisés en utilisant des outils de débogage. Par ailleurs, aucun redémarrage du système Blackboard Learn n'est nécessaire.

Pour définir la partie de confiance créée pour Blackboard Learn de façon à envoyer les attributs sous forme non chiffrée, ouvrez un PowerShell et exécutez la commande suivante, en remplaçant TargetName par le nom donné à la partie de confiance créée précédemment :

set-ADFSRelyingPartyTrust –TargetName "yourlearnsever.blackboard.com" –EncryptClaims $False

Après cette modification, il est nécessaire de redémarrer le service ADFS à l'aide de la commande suivante : Restart-Service ADFSSRV


Définir le fournisseur d'authentification SAML comme étant actif

  1. Dans Blackboard Learn, naviguez jusqu'à Administrateur système > Authentification.
  2. Ouvrez le menu situé à côté du nom du fournisseur d'authentification SAML et affectez-lui la valeur Actif.

Le fournisseur d'identité ADFS est ensuite configuré en tant que fournisseur d'authentification SAML, et peut être utilisé pour se connecter à Blackboard Learn.

  1. Sur la page de connexion de Blackboard Learn, sélectionnez Se connecter avec un compte tiers.
  2. Sélectionnez le fournisseur d'authentification SAML.
  3. Saisissez les données d'identification de connexion sur la page de connexion ADFS.

Renvoi automatique vers la page de connexion du fournisseur d'identité

La page de connexion standard de Blackboard Learn contient des champs de nom d'utilisateur/mot de passe pour le fournisseur d'authentification interne par défaut de Blackboard Learn et un court lien Se connecter avec.... pour SAML. Par conséquent, lorsqu'un établissement active l'authentification SAML, elle peut demander que les utilisateurs soient renvoyés automatiquement vers le serveur d'authentification de leur fournisseur d'identité lorsqu'ils accèdent pour la première fois au site Blackboard Learn.

Pour y parvenir dans l'interface graphique de Blackboard Learn, accédez à Administrateur système > Authentification, et affectez la valeur Inactive à l'authentification interne par défaut de Blackboard Learn. Aucune page de connexion n'est affichée, et l'utilisateur est immédiatement redirigé vers la connexion SAML. Cette option présente l'inconvénient de remplacer l'URL de connexion par défaut et d'empêcher les utilisateurs autres que SAML de se connecter.

Pour éviter ce problème et obtenir pratiquement le même résultat, utilisez une page de connexion personnalisée. Les utilisateurs sont réorientés vers la page de connexion du fournisseur d'identité du fournisseur d'authentification SAML, mais le lien de connexion par défaut est également utilisable.

Vous pouvez créer une page de connexion personnalisée afin que les utilisateurs soient redirigés vers la page de connexion du fournisseur d'identité du fournisseur d'authentification SAML. Le lien de connexion par défaut restera utilisable, si nécessaire.

  1. Vérifiez que l'authentification interne par défaut de Blackboard Learn est active.
  2. Accédez à la page de connexion par défaut, puis copiez l'emplacement de la redirection du fournisseur, par exemple Se connecter avec SAML (n'ouvrez pas le lien, utilisez Copier l'emplacement du lien).
  3. Dans l'interface graphique de Blackboard Learn, naviguez jusqu'à Administrateur système > Communautés : Marques et thèmes > Personnaliser la page de connexion.
  4. Sélectionnez Télécharger en regard de Page de connexion par défaut afin de télécharger le fichier JSP de connexion par défaut.
  5. Ouvrez le fichier JSP que vous venez de télécharger dans un éditeur de texte.
  6. Ajoutez l'exemple HTML suivant au fichier JSP de connexion tout en remplaçant le texte de l'URL par l'URL copiée à l'étape 2 (aux deux endroits où s'affiche https://URL_Goes_Here)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Blackboard Learn - Redirect</title>
    <meta http-equiv="REFRESH" content="0;url=https://URL_Goes_Here"></HEAD>
    <BODY style="font-family: arial,sans-serif;font-size: small; color: grey; padding: 1em; ">
    Redirecting... <a style="color:grey" href="https://URL_Goes_Here">Go to login page</a&gt; if you are not automatically redirected.
    </BODY>
    </HTML>

  7. Revenez dans Personnaliser la page de connexion, dans l'interface graphique Blackboard Learn. Sélectionnez la page Utiliser la page personnalisée, puis téléchargez le fichier JSP de connexion mis à jour.
  8. Après avoir effectué les modifications, sélectionnez Aperçu dans Personnaliser la page de connexion pour confirmer que la redirection fonctionne correctement.

Les utilisateurs accédant à l'URL principale seront désormais réorientés vers la page de connexion du fournisseur d'authentification SAML. Les administrateurs peuvent également continuer à se connecter en utilisant l'authentification interne Blackboard Learn via la page de connexion par défaut : /webapps/login/?action=default_login (ou /webapps/login/login.jsp).

En savoir plus sur la personnalisation de la page de connexion dans l'expérience d'origine

En savoir plus sur la personnalisation de la page de connexion dans l'expérience Ultra