Dit onderwerp bevat instructies voor het instellen van SAML-verificatie in een instantie van Blackboard Learn met Active Directory Federation Services (ADFS) als de identiteitsprovider (IdP). De Blackboard Learn-omgeving fungeert als de serviceprovider (SP). Hoewel in deze procedure ADFS versie 3.0 met Windows Server 2012 R2 wordt gebruikt, zijn de stappen ook van toepassing op ADFS 2.0.

Learn-serviceprovider

  1. Meld je als beheerder aan bij Blackboard Learn en ga naar Systeembeheer > Verificatie.
  2. Selecteer Provider maken > SAML.
  3. Geef waarden op voor de volgende instellingen:
    • Naam > typ ADFS SAML of een andere naam.
    • Verificatieprovider > stel in op Inactief.
    • Zoekmethode gebruikers > Gebruikersnaam
    • Beperken op hostnaam > Deze provider gebruiken voor alle hostnamen.
    • Koppelingstekst > typ Aanmelden ADFS of een andere naam.
  4. Selecteer Opslaan en configureren.
  5. De waarde van het veld Entity ID moet hetzelfde zijn als de waarde van ACS URL.
  6. Selecteer Genereren onder Metadata serviceprovider en sla het bestand op je computer op.
  7. Het wordt aangeraden om een nieuwe gegevensbron te maken voor deze provider met de naam SAML, of anders SYSTEEM of een andere naam.
  8. Schakel het selectievakje JIT-inrichting inschakelen in, zodat er automatisch een account wordt gemaakt als een onbekende gebruiker probeert zich aan te melden via deze SAML-verificatieprovider. Als dit selectievakje niet is ingeschakeld, moet het gebruikersaccount eerst handmatig worden gemaakt in Blackboard Learn.
  9. Selecteer in de lijst Compatibele gegevensbronnen de gegevensbronnen waarmee deze verificatieprovider compatibel moet zijn.
  10. Selecteer Identiteitsprovider aanwijzen voor Type van de identiteitsprovider.
  11. Voor Metadata identiteitsprovider bevat het XML-bestand met metagegevens voor ADFS elementen die niet compatibel zijn met SAML 2.0. Voordat de metagegevens worden geüpload, moet je het bestand bewerken om deze niet compatibele elementen te verwijderen.
    1. De standaardlocatie van metagegevens voor een ADFS-federatie is https://[ADFS server hostname]/FederationMetadata/2007-06/FederationMetadata.xml
    2. Download het bestand en open het in een teksteditor. Verwijder de sectie die begint met <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"&gt; ... </X509Data></KeyInfo> en eindigt met </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. Upload het bijgewerkte XML-bestand met metagegevens naar Blackboard Learn.
  12. Geef in de sectie SAML-kenmerken in kaart brengen SamAccountName op voor Externe gebruikers-ID.
  13. Selecteer Verzenden.

ADFS-identiteitsprovider

  1. Open op de ADFS-server de ADFS Management Console.
  2. Ga naar Trust Relationships > Relying Party Trusts > Add Relying Party Trust.
  3. Selecteer Start op de pagina Add Relying Party Trust Wizard.
  4. Selecteer Import Data about the relying party from a file.
  5. Selecteer Browse en upload het bestand dat is gemaakt in stap 6 van de vorige sectie. Selecteer Next.
  6. Voer een waarde in voor Display Name, zoals naamvanlearnserver.blackboard.com en selecteer Next.
  7. Selecteer I do not want to configure multi-factor authentication settings... en selecteer Next.
  8. Selecteer Permit All Users to Access this Relying Party en selecteer Next.
  9. Selecteer Next in de stap Ready to Add Trust en selecteer vervolgens Close in de stap Finish.
  10. Nadat de Relying Party Trust is gemaakt, moet de pagina Edit Claims Rules worden geopend als het laatste selectievakje ingeschakeld is gebleven. Klik anders met de rechtermuisknop op Relying Party Trust en selecteer Edit Claims.

Claimregels toevoegen voor relying party trust

Kenmerken versturen als claims

Door claimregels toe te voegen voor de Relying Party Trust worden LDAP-kenmerken als claims verstuurd van de ADFS-server naar Blackboard Learn. Klik in de beheerconsole van ADFS met de rechtermuisknop op de Relying Party Trust.

Gebruikersnaam versturen

  1. Selecteer Add Rule op het tabblad Issuance Transform Rules.
  2. Selecteer op de pagina Select Rule Template de optie Send LDAP Attributes as Claims voor Claim rule template en selecteer dan Next.
  3. Ga op de pagina Configure Rule naar Claim rule name en typ Transform Username to NameID.
  4. Selecteer Active Directory in de vervolgkeuzelijst Attribute Store.
  5. Selecteer in de lijst Mapping aan de linkerkant de optie SAM-Account-Name of Company.
  6. Typ in het vak Mapping aan de rechterkant SamAccountName en selecteer Finish.

Voor- en achternaam versturen (optioneel)

Als de optie JIT-inrichting inschakelen is geselecteerd op de pagina Instellingen voor SAML-verificatie van Blackboard Learn, zodat er gebruikersaccounts worden gemaakt in Blackboard Learn als deze niet bestaan, kunnen de LDAP-kenmerken First Name en Last Name ook vanuit ADFS worden verstuurd naar Blackboard Learn door de kenmerken zo te koppelen.

  1. Selecteer Add Rule op het tabblad Issuance Transform Rules.
  2. Selecteer op de pagina Select Rule Template de optie Send LDAP Attributes as Claims voor Claim rule template en selecteer dan Next.
  3. Ga op de pagina Configure Rule naar Claim rule name en typ Send First Name.
  4. Selecteer Active Directory in de vervolgkeuzelijst Attribute Store.
  5. Selecteer in de lijst Mapping aan de linkerkant de optie Given-Name.
  6. Typ in het vak Mapping aan de rechterkant urn:oid:2.5.4.42 en selecteer Finish.
  7. Selecteer Add Rule op het tabblad Issuance Transform Rules.
  8. Selecteer op de pagina Select Rule Template de optie Send LDAP Attributes as Claims voor Claim rule template en selecteer dan Next.
  9. Ga op de pagina Configure Rule naar Claim rule name en typ Send Last Name.
  10. Selecteer Active Directory in de vervolgkeuzelijst Attribute Store.
  11. Selecteer in de lijst Mapping aan de linkerkant de optie Surname.
  12. Typ in het vak Mapping aan de rechterkant urn:oid:2.5.4.4 en selecteer Finish.

Een binnenkomende claim transformeren

  1. Selecteer Add Rule.
  2. Selecteer op de pagina Select Rule Template de optie Transform an Incoming Claim voor Claim rule template en selecteer daarna Next.
  3. Ga op de pagina Configure Rule naar Claim rule name en typ Transform Email to Name ID.
  4. Incoming claim type moet zijn ingesteld op SamAccountName. Dit moet overeenkomen met de Outgoing Claim Type die is gemaakt in de eerdere regel.
  5. De waarde voor Outgoing claim type is Name ID.
  6. De waarde voor Outgoing name ID format is Niet opgegeven.
  7. Controleer of Pass through all claim values is geselecteerd selecteer Finish.
  8. Selecteer OK om de regel op te slaan en selecteer nogmaals OK om de toewijzing van de kenmerken te voltooien.

Voorbeeld van kenmerkinstructie

Nadat alle eerder genoemde claimregels zijn toegevoegd voor de Relying Party Trust, worden de regels weergegeven op het tabblad Issuance Transform Rules.

Subject- en AttributeStatement-elementen vergelijkbaar met de onderstaande elementen worden in de SAML POST verzonden van ADFS naar Blackboard Learn nadat de gebruiker is geverifieerd:

<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>

Als de kenmerken van de IdP niet zijn gecodeerd in de SAML-respons, kun je de Firefox-invoegtoepassing SAML tracer of SAML Message Decoder van Chrome gebruiken om de kenmerken weer te geven die worden vrijgegeven door de IdP en die tijdens het verificatieproces naar Blackboard Learn worden verstuurd.


ADFS configureren voor het gebruik van SHA-1

  1. Ga naar het configuratiescherm voor systeembeheer.
  2. Selecteer Building Blocks onder Building Blocks.
  3. Selecteer Geïnstalleerde tools.
  4. Zoek Verificatieprovider - SAML in de lijst. Open het menu en selecteer Instellingen.
  5. Kies onder Signature Algorithm-instellingen de optie SHA-1 in de lijst. Nadat je een waarde hebt gekozen voor Type Signature Algorithm, start je het Building Block SAML opnieuw om de nieuwe instellingen toe te passen.
  6. Selecteer Verzenden om de wijzigingen op te slaan.

Belangrijke aanvullende ADFS-configuratie

Kenmerken die worden verstuurd door ADFS worden standaard gecodeerd met AES-256. De Java-runtime die wordt gebruikt door Blackboard Learn biedt geen ingebouwde ondersteuning voor AES-256. Een gebruiker kan zich niet aanmelden via SAML-verificatie en de volgende SAML-gerelateerde foutberichten worden vastgelegd in de logboeken.

In /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

In /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

Aangezien de configuratie van de back-end van Blackboard Learn SaaS meestal niet wordt ondersteund, is een universele oplossing om een PowerShell-sessie te openen op de ADFS-server en in te stellen dat de relying party die wordt gemaakt voor Blackboard Learn, de kenmerken ongecodeerd verzendt. Aangezien de communicatie volledig verloopt via SSL, heeft dit geen gevolgen voor de beveiliging van de verificatie. Hierdoor wordt ook de foutopsporing van eventuele problemen gemakkelijker, aangezien de kenmerken kunnen worden bekeken met tools voor foutopsporing en het Blackboard Learn-systeem niet opnieuw hoeft te worden gestart.

Als je wilt instellen dat de relying party die wordt gemaakt voor Blackboard Learn de kenmerken ongecodeerd verstuurt, open je een PowerShell-sessie en voer je de volgende opdracht uit, waarbij je TargetName vervangt door de naam voor de eerder gemaakte relying party:

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

Na deze wijziging moet de ADFS-service opnieuw worden gestart met de opdracht: Restart-Service ADFSSRV


SAML-verificatieprovider actief maken

  1. Ga in Blackboard Learn naar Systeembeheer > Verificatie.
  2. Open het menu naast de naam van de SAML-verificatieprovider en selecteer Actief.

De ADFS-IdP is dan geconfigureerd als een SAML-verificatieprovider en kan worden gebruikt voor aanmelding bij Blackboard Learn.

  1. Selecteer Aanmelden met account van derden op de aanmeldingspagina van Blackboard Learn.
  2. Selecteer de SAML-verificatieprovider.
  3. Voer de aanmeldingsreferenties in op de aanmeldingspagina van ADFS.

Automatisch omleiden naar aanmeldingspagina van IdP

De gebruikelijke aanmeldingspagina van Blackboard Learn bevat velden voor gebruikersnaam en wachtwoord voor de standaardverificatieprovider van Blackboard Learn (Intern) plus een kleine koppeling Aanmelden met behulp van... voor SAM. Als een instelling SAML-verificatie inschakelt, kunnen ze daarom configureren dat gebruikers automatisch worden omgeleid naar de verificatieserver van hun IdP wanneer ze voor het eerst de site van Blackboard Learn bezoeken.

Dit kan bijvoorbeeld door in de GUI van Blackboard Learn naar Systeembeheer > Verificatie te gaan en de interne verificatieprovider van Learn op Inactief te zetten. Er wordt dan geen aanmeldingspagina meer weergegeven en de gebruiker wordt direct omgeleid naar de SAML-aanmelding. Het probleem met deze optie is dat de standaard-URL voor aanmelding wordt genegeerd, waardoor alleen SAML-gebruikers zich kunnen aanmelden.

Een oplossing voor dit probleem is om een aangepaste aanmeldingspagina te gebruiken. Gebruikers worden dan omgeleid naar de IdP-aanmeldingspagina van de SAML-verificatieprovider, maar de standaardkoppeling voor aanmelding is ook bruikbaar.

Je kunt een aangepaste aanmeldingspagina maken zodat gebruikers worden doorgestuurd naar de IdP-aanmeldingspagina van de SAML-verificatieprovider. De standaardkoppeling voor aanmelding is nog steeds bruikbaar indien nodig.

  1. Zorg ervoor dat de interne verificatie van Blackboard Learn actief is
  2. Ga naar de standaardaanmeldingspagina en kopieer de locatie van de provideromleiding, bijvoorbeeld Aanmelden met behulp van... SAML (open niet de koppeling, maar gebruik Koppelingslocatie kopiëren).
  3. Ga in de GUI van Blackboard Learn naar Systeembeheer > Communities: Opmaken en thema's > Aanmeldingspagina aanpassen.
  4. Selecteer Downloaden naast Standaardaanmeldingspagina om het standaard JSP-bestand voor aanmelden te downloaden.
  5. Open het gedownloade JSP-bestand met een teksteditor.
  6. Voeg de volgende voorbeeld-HTML-code toe aan het JSP-aanmeldingsbestand en vervang de URL door de URL die is gekopieerd in stap 2 (op de twee plekken waar https://URL_Goes_Here staat)

    <!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. Ga terug naar Aanmeldingspagina aanpassen in de GUI van Blackboard Learn, selecteer Aangepaste aanmeldingspagina gebruiken en upload het bijgewerkte JSP-aanmeldingsbestand.
  8. Selecteer na het aanbrengen van de wijzigingen Voorbeeld op de pagina Aanmeldingspagina aanpassen om te controleren of de omleiding goed werkt.

Gebruikers die naar de hoofd-URL gaan, worden nu omgeleid naar de aanmeldingspagina voor de SAML-verificatieprovider. Beheerders kunnen zich nog steeds aanmelden met behulp van de interne verificatieprovider van Blackboard Learn via de standaardaanmeldingspagina: /webapps/login/?action=default_login (oftewel /webapps/login/login.jsp).

Meer informatie over het aanpassen van de aanmeldingspagina in de originele ervaring

Meer informatie over het aanpassen van de aanmeldingspagina in de Ultra-ervaring