En este tema encontrará las instrucciones para configurar la autenticación SAML en una instancia de Blackboard Learn con Active Directory Federation Services (ADFS) como el proveedor de servicios (IdP). Su entorno de Blackboard Learn actúa como el proveedor de servicios (SP). Si bien estos pasos corresponden a la versión 3.0 de ADFS con Windows Server 2012 R2, también puede utilizarlos para ADFS 2.0.

Proveedor de servicios de Learn

  1. Inicie sesión como administrador en Blackboard Learn y vaya a Admin. del sistema > Autenticación.
  2. Elija la opción Crear un proveedor > SAML.
  3. Introduzca los siguientes ajustes:
    • Nombre > escriba SAML de ADFS o el que desee.
    • Proveedor de la autenticación > establézcalo como Inactivo.
    • Método de búsqueda de los usuarios > Nombre de usuario.
    • Restringir por nombre de host > Usar este proveedor para cualquier nombre de host.
    • Texto del enlace > escriba Inicio de sesión de ADFS o el que desee.
  4. Seleccione Guardar y configurar.
  5. En el campo ID de la entidad, asegúrese de que el valor sea el mismo que el de la URL de ACS.
  6. En Metadatos del proveedor de servicios, elija la opción Generar y guarde el archivo en el escritorio.
  7. Se recomienda que cree un nuevo Origen de los datos para este proveedor con el nombre SAML; de lo contrario, use SISTEMA o el nombre que desee.
  8. Marque la casilla de verificación Activar el aprovisionamiento JIT para permitir que el sistema cree automáticamente una cuenta cuando un usuario desconocido intenta iniciar sesión a través del proveedor de la autenticación SAML. Si no se selecciona esta opción, se deberá crear primero la cuenta de usuario de forma manual en Blackboard Learn.
  9. En la lista Orígenes de datos compatibles, asegúrese de seleccionar los orígenes de datos con los que este proveedor de la autenticación debe ser compatible.
  10. Seleccione Señalar el proveedor de identidades para el Tipo de proveedor de identidades.
  11. Con relación a los metadatos del proveedor de identidades, el archivo XML de metadatos para ADFS incluye elementos que no son compatibles con SAML 2.0. Antes de cargar los metadatos, deberá editarlos para eliminar los elementos que no son compatibles.
    1. La ubicación predeterminada de los metadatos para una federación de ADFS es https://[ADFS server hostname]/FederationMetadata/2007-06/FederationMetadata.xml.
    2. Descargue el archivo y ábralo en el editor de texto. Con cuidado, elimine la sección que comienza con <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"&gt; ... </X509Data></KeyInfo> y termina en </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. Cargue el archivo XML de metadatos actualizado en Blackboard Learn.
  12. Para la sección Asignar atributos SAML, use SamAccountName como ID de usuario remoto.
  13. Seleccionar Enviar.

Proveedor de identidad de ADFS

  1. En el servidor de ADFS, acceda a la Consola de administración de ADFS.
  2. Vaya a Relaciones de confianza > Relaciones de confianza para usuarios autenticados > Agregar una relación de confianza para usuario autenticado.
  3. En la página Asistente para agregar relaciones de confianza para usuarios autenticados, seleccione Iniciar.
  4. Haga clic en Importar los datos sobre la relación de confianza desde un archivo.
  5. Seleccione Examinar y cargue el archivo que se creó en el Paso 6 de la sección SP de Learn. Seleccione Siguiente.
  6. Escriba un nombre para mostrar, como yourlearnserver.blackboard.com, y haga clic en Siguiente.
  7. Elija la opción No deseo configurar la autenticación de varios factores... y haga clic en Siguiente.
  8. Seleccione Permitir que todos los usuarios tengan acceso a esta relación de confianza y haga clic en Siguiente.
  9. Haga clic en Siguiente en el paso Listo para agregar una relación de confianza y luego seleccione Cerrar en el paso Finalizar.
  10. Una vez creada la Relación de confianza para usuario autenticado, se debería abrir la opción Editar las reglas de notificación si no se quitó la selección en la última casilla de verificación. De lo contrario, haga clic con el botón derecho en Relación de confianza para usuario autenticado y seleccione Editar las notificaciones.

Agregar reglas de notificaciones para una relación de confianza

Enviar los atributos como notificaciones

Si se agregan reglas de notificaciones para la relación de confianza para usuario autenticado, el servidor de ADFS envía los atributos LDAP como notificaciones a Blackboard Learn. En la consola de administración de ADFS, haga clic con el botón derecho en la relación de confianza para usuario autenticado.

Enviar un nombre de usuario

  1. En la ficha Reglas de transformación de emisión, seleccione Agregar una regla.
  2. En la página Seleccionar una plantilla para la regla, elija la opción Enviar los atributos LDAP como notificaciones para la plantilla de la regla de notificaciones y seleccione Siguiente.
  3. En la página Configurar la regla, en el cuadro Nombre de la regla de notificación, escriba Transformar el nombre de usuario en la ID del nombre.
  4. En el menú desplegable Almacén de atributos, seleccione Active Directory.
  5. En el cuadro Asignación a la izquierda, seleccione SAM-Account-Name o Empresa.
  6. En el cuadro Asignación a la derecha, escriba SamAccountName y seleccione Finalizar.

Enviar nombre y apellido (opcional)

Si se ha seleccionado la opción Aprovisionamiento JIT en la página Ajustes de la autenticación SAML de Blackboard Learn, con lo cual se crearán las cuentas de usuario cuando no existan, los atributos LDAP de nombre y apellido también se pueden enviar de ADFS a Blackboard Learn mediante la asignación de los atributos respectivamente.

  1. En la ficha Reglas de transformación de emisión, seleccione Agregar una regla.
  2. En la página Seleccionar una plantilla para la regla, elija la opción Enviar los atributos LDAP como notificaciones para la plantilla de la regla de notificaciones y seleccione Siguiente.
  3. En la página Configurar la regla, en el cuadro Nombre de la regla de notificación, escriba Enviar el nombre.
  4. En el menú desplegable Almacén de atributos, seleccione Active Directory.
  5. En el cuadro Asignación, a la izquierda, seleccione Given-Name.
  6. En el cuadro Asignación, a la derecha, escriba urn:oid:2.5.4.42 y seleccione Finalizar.
  7. En la ficha Reglas de transformación de emisión, seleccione Agregar una regla.
  8. En la página Seleccionar una plantilla para la regla, elija la opción Enviar los atributos LDAP como notificaciones para la plantilla de la regla de notificaciones y seleccione Siguiente.
  9. En la página Configurar la regla, en el cuadro Nombre de la regla de notificación, escriba Enviar el apellido.
  10. En el menú desplegable Almacén de atributos, seleccione Active Directory.
  11. En el cuadro Asignación, a la izquierda, seleccione Apellido.
  12. En el cuadro Asignación, a la derecha, escriba urn:oid:2.5.4.4 y seleccione Finalizar.

Transformar un notificación entrante

  1. Elija Agregar regla.
  2. En la página Seleccionar una plantilla para la regla, elija la opción Transformar una notificación entrante para la plantilla de la regla de notificaciones y seleccione Siguiente.
  3. En la página Configurar la regla, en el cuadro Nombre de la regla de notificación, escriba Transformar el correo electrónico en la ID del nombre.
  4. El tipo de notificación entrante debe ser SamAccountName. Debe coincidir con el Tipo de notificación saliente que se creó en la regla anterior.
  5. El Tipo de notificación saliente es la ID del nombre.
  6. El formato de la ID del nombre saliente es el correo electrónico.
  7. Confirme que se haya seleccionado Aplicar a todos los valores de notificaciones y seleccione Finalizar.
  8. Seleccione Aceptar para guardar la regla y, nuevamente, Aceptar para completar las asignaciones de los atributos.

Ejemplo de declaración de atributos

Después de agregar todas las reglas de notificaciones antes mencionadas para la Relación de confianza para usuario autenticado, se muestran las reglas en la ficha Reglas de transformación de emisión.

Una vez que el usuario haya sido autenticado, se enviarán los elementos Subject y AttributeStatement similares a los siguientes en SAML POST de ADFS a Blackboard Learn:

<Subject>
    <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">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 los atributos del IdP no están cifrados en la respuesta de SAML, puede utilizar el complemento SAML Tracer del navegador Firefox o SAML Message Decoder de Chrome para ver los atributos emitidos por el IdP y enviados a Blackboard Learn durante el proceso de autenticación.


Configurar ADFS para usar SHA-1

  1. Vaya al Panel del administrador.
  2. En Building Blocks, seleccione Building Blocks.
  3. Seleccione Herramientas instaladas.
  4. Busque la opción Proveedor de la autenticación: SAML en la lista. Abra el menú y seleccione Ajustes.
  5. En Ajustes del algoritmo de firma, elija la opción SHA-1 de la lista. Después de seleccionar la opción Tipo de algoritmo de firma, reinicie el Building Block SAML para que se apliquen los nuevos ajustes.
  6. Seleccione Enviar para guardar los cambios.

Configuración adicional importante de ADFS

ADFS cifra los atributos y los envía con AES-256 de forma predeterminada. El entorno de ejecución de Java que Blackboard Learn utiliza no es compatible con AES-256 tal como está. El usuario no podrá iniciar sesión con la autenticación SAML, y el siguiente mensaje de error relacionado con SAML aparecerá en los registros.

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

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

Dado que la configuración del back-end de Blackboard Learn SaaS no es compatible, por lo general, una opción universal para solucionar este problema es abrir una instancia de PowerShell en el servidor de ADFS y establecer que el usuario de confianza creado para Blackboard Learn envíe los atributos sin cifrar. Dado que toda la comunicación se realiza a través de SSL, no afectará la seguridad de la autenticación. Además, hace que la depuración de cualquier problema sea más sencilla, ya que los atributos se pueden ver con las herramientas de depuración y no es necesario reiniciar el sistema de Blackboard Learn.

Para que el usuario de confianza creado para Blackboard Learn envíe los atributos sin cifrar, abra PowerShell y ejecute el siguiente comando después de reemplazar TargetName por el nombre del usuario de confianza que se creó anteriormente:

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

Después de efectuar este cambio, deberá reiniciar el servicio de ADFS con el siguiente comando: Restart-Service ADFSSRV


Establecer el proveedor de la autenticación SAML como activo

  1. En Blackboard Learn, vaya a Admin. del sistema > Autenticación.
  2. Abra el menú junto al nombre del proveedor de la autenticación SAML y establezca el estado del proveedor en Activo.

El IdP de ADFS quedará configurado como el proveedor de la autenticación SAML y se podrá utilizar para iniciar sesión en Blackboard Learn.

  1. En la página de inicio de sesión de Blackboard Learn, seleccione Acceder con una cuenta de terceros.
  2. Seleccione el proveedor de la autenticación SAML.
  3. Introduzca las credenciales en la página de inicio de sesión de ADFS.

Redireccionamiento automático a la página de inicio de sesión del IdP

Dado que la página de inicio de sesión estándar de Blackboard Learn contiene los campos "nombre de usuario" y "contraseña" para el proveedor de la autenticación interno predeterminado de Blackboard Learn y un breve enlace Acceder mediante... para SAML, cuando una institución activa la autenticación SAML, puede solicitar que se redirija a los usuarios automáticamente al servidor de autenticación del IdP la primera vez que acceden al sitio de Blackboard Learn.

Una de las opciones es ir a Admin. del sistema > Autenticación en la GUI de Blackboard Learn y establecer la autenticación interna predeterminada de Blackboard Learn como Inactiva. Ya no aparecerá una página de inicio de sesión, y el usuario será inmediatamente redirigido a la página de inicio de SAML. El problema que presenta esta opción es que reemplaza la URL de inicio de sesión predeterminada e impide que un usuario que no utiliza SAML pueda acceder.

Una de las maneras de evitar este problema y obtener prácticamente el mismo resultado es usar una página de inicio de sesión personalizada, de modo que se redirija a los usuarios a la página de inicio de sesión del IdP del proveedor de la autenticación SAML, pero también se pueda utilizar el enlace a la página de inicio predeterminada.

Puede crear una Página de inicio de sesión personalizada de modo que se redirija a los usuarios a la página de inicio de sesión del IdP del proveedor de la autenticación SAML. El enlace a la página de inicio predeterminada se podrá seguir utilizando.

  1. Asegúrese de la autenticación interna predeterminada de Blackboard Learn esté activa.
  2. Vaya a la página de inicio de sesión predeterminada y copie la ubicación del redireccionamiento del proveedor, p. ej., Acceder mediante... SAML (no abra el enlace, use la opción Copiar la ubicación del enlace).
  3. En la GUI de Blackboard Learn, vaya a Admin. del sistema > Comunidades: Marcas y temas > Página de inicio de sesión personalizada.
  4. Seleccione Descargar junto a la opción Página de inicio de sesión predeterminada para descargar el archivo JSP.
  5. Abra el archivo JSP de inicio de sesión que descargó con un editor de texto.
  6. Agregue el siguiente HTML de muestra al archivo JSP y sustituya el texto de la URL por el texto de la URL que copió en el Paso 2 (en las dos ubicaciones en las que aparecer 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. Nuevamente en la GUI de Blackboard Learn, en la Página de inicio de sesión personalizada, seleccione Usar la página personalizada y cargue el archivo JSP de inicio de sesión actualizado.
  8. Después de efectuar los cambios, elija la opción Vista previa en la Página de inicio de sesión personalizada para verificar que el redireccionamiento funcione correctamente.

Ahora, los usuarios que vayan a la URL principal serán redirigidos a la página de inicio de sesión del proveedor de la autenticación SAML. Además, los administradores pueden seguir iniciando sesión con la autenticación interna de Blackboard Learn a través de la página predeterminada: /webapps/login/?action=default_login (también conocida como /webapps/login/login.jsp).

Más información sobre cómo personalizar la página de inicio de sesión en la experiencia Original

Más información sobre cómo personalizar la página de inicio de sesión en la experiencia Ultra