Este tópico fornece instruções para definir a autenticação SAML na instância do Blackboard Learn com o Active Directory Federation Services (ADFS) como Servidor de identidade (IdP). O ambiente do seu Blackboard Learn atua como o Provedor de serviços (SP). Estas etapas usam o ADFS versão 3.0 com o Windows Server 2012 R2, mas também podem ser aplicadas ao ADFS 2.0.

Provedor de serviços do Learn

  1. Faça o logon na Blackboard Learn como administrador e navegue na Administração do sistema > Autenticação.
  2. Selecione Criar provedor > SAML.
  3. Insira as seguintes configurações:
    • Em Nome > digite ADFS SAML ou qualquer outro nome que desejar.
    • Em Provedor de autenticação > defina como Inativo.
    • Em Método de pesquisa do usuário > Nome de usuário
    • Em Restringir por nome de host > Usar este provedor para qualquer nome de host.
    • Em Texto do link > digite Login de ADFS ou qualquer outro nome que desejar.
  4. Clique em Salvar e configurar.
  5. No campo ID de entidade, verifique se o valor é o mesmo que o URL de ACS.
  6. Em Metadados do provedor de serviços, clique em Gerar e salve o arquivo no seu desktop.
  7. Recomenda-se criar uma nova Fonte de dados para esse provedor com o nome de SAML, ou então usar SISTEMA ou qualquer outro nome que escolher.
  8. Marque a caixa de seleção Habilitar o suprimento JIT para permitir que o sistema crie uma conta automaticamente quando um usuário desconhecido tentar fazer logon por meio desse provedor de autenticação SAML. Se não for marcado, a conta do usuário precisará primeiro ser criada de forma manual no Blackboard Learn.
  9. Na lista Fontes de dados compatíveis, selecione as fontes de dados com as quais esse provedor de autenticação deve ser compatível.
  10. Selecione Apontar o provedor de identidade para o Tipo de provedor de identidade.
  11. Para os Metadados do provedor de identidade, o arquivo XML de metadados para ADFS inclui elementos que não são compatíveis com o SAML 2.0. Antes de carregar os metadados, você precisa editá-los para remover elementos incompatíveis.
    1. A localização padrão dos metadados para uma federação ADFS é https://[ADFS server hostname]/FederationMetadata/2007-06/FederationMetadata.xml
    2. Faça o download do arquivo e abra-o em um editor de textos. Com cuidado, exclua a seção que começa com <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"&gt; ... </X509Data></KeyInfo> e termina em </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. Faça o upload do arquivo XML de metadados atualizado no Blackboard Learn.
  12. Para a seção Associar atributos de SAML, use SamAccountName para o Código de usuário remoto.
  13. Selecione Enviar.

Provedor de identidade ADFS

  1. No Servidor de ADFS, acesse o Console de gerenciamento de ADFS.
  2. Navegue até Relacionamentos de confiança > Confianças da terceira parte confiável > Adicionar confiança da terceira parte confiável.
  3. Selecione Começar na página do Assistente de Adicionar confiança da terceira parte confiável.
  4. Selecione Importar dados sobre a parte confiável a partir de um arquivo.
  5. Selecione Pesquisar e faça o upload do arquivo que foi criado na Etapa 6 do SP do Learn. Selecione Avançar.
  6. Insira um nome de Exibição como yourlearnserver.blackboard.com e selecione Avançar.
  7. Selecione Eu não quero definir as configurações de autenticação de vários fatores... e selecione Avançar.
  8. Selecione Permitir que todos os usuários acessem esta terceira parte confiável e selecione Avançar.
  9. Selecione Avançar na etapa Pronto para adicionar confiança em seguida selecione Fechar na etapa Encerrar.
  10. Logo após criar Confiança da terceira parte confiável, Editar regras de declaração deverá abrir, se a última caixa de seleção tiver sido marcada. Caso contrário, clique com o botão direito em Confiança da terceira parte confiável e selecione Editar Declarações.

Adicionar regras de declaração para Confiança da terceira parte confiável

Enviar atributos como declarações

Adicionar regras de declaração para a Confiança da terceira parte confiável envia atributos LDAP como declarações do servidor ADFS para o Blackboard Learn. No console de gerenciamento do ADFS, clique com o botão direito em Confiança da terceira parte confiável.

Enviar nome de usuário

  1. Na guia Regras de transformação de emissão, selecione Adicionar regra.
  2. Na página Selecionar modelo de regra, selecione Enviar atributos LDAP como declarações como o Modelo de regra de declaração e selecione Avançar.
  3. Na página Configurar regra, na caixa Nome de regra de declaração, digite Transformar nome de usuário em NomeID.
  4. No menu suspenso da Lista de Atributos, selecione Active Directory.
  5. Na caixa Mapeamento à esquerda, selecione SAM-Account-Name ou Empresa.
  6. Na caixa Mapeamento à direita, digite SamAccountName e selecione Encerrar.

Enviar nome e sobrenome (opcional)

Se a opção Suprimento JIT estiver selecionada na página de Configurações de autenticação SAML do Blackboard Learn, o que significa que contas de usuários serão criadas no Blackboard Learn se elas não existirem, então os atributos LDAP Nome e Sobrenome também poderão ser enviados do ADFS para o Blackboard Learn por meio do mapeamento dos atributos correspondentes.

  1. Na guia Regras de transformação de emissão, selecione Adicionar regra.
  2. Na página Selecionar modelo de regra, selecione Enviar atributos LDAP como declarações como o Modelo de regra de declaração e selecione Avançar.
  3. Na página Configurar regra, na caixa Nome de regra de declaração, digite Enviar nome.
  4. No menu suspenso da Lista de Atributos, selecione Active Directory.
  5. Na caixa Mapeamento à esquerda, selecione Nome.
  6. Na caixa Mapeamento à direita, digite urn:oid:2.5.4.42 e selecione Encerrar.
  7. Na guia Regras de transformação de emissão, selecione Adicionar regra.
  8. Na página Selecionar modelo de regra, selecione Enviar atributos LDAP como declarações como o Modelo de regra de declaração e selecione Avançar.
  9. Na página Configurar regra, na caixa Nome de regra de declaração, digite Enviar sobrenome.
  10. No menu suspenso da Lista de Atributos, selecione Active Directory.
  11. Na caixa Mapeamento à esquerda, selecione Sobrenome.
  12. Na caixa Mapeamento à direita, digite urn:oid:2.5.4.4 e selecione Encerrar.

Transformar uma declaração de entrada

  1. Selecione Adicionar regra.
  2. Na página Selecionar modelo de regra, selecione Transformar uma declaração de entrada para o Modelo de regra de declaração e selecione Avançar.
  3. Na página Configurar regra, na caixa Nome de regra de declaração, digite Transformar e-mail em ID de nome.
  4. Tipo de declaração de entrada deve ser SamAccountName. Deve corresponder ao Tipo de declaração de saída criado na regra anterior.
  5. O Tipo de declaração de saída é o Código do nome.
  6. O Formato de código de saída é Não especificado.
  7. Confirme que Passar por todos os valores de declaração está selecionado e selecione Concluir.
  8. Selecione OK para salvar a regra e OK novamente para concluir os mapeamentos de atributo.

Exemplo de declaração de atributos

Depois de adicionar todas as regras de declaração mencionadas anteriormente para Confiança da terceira parte confiável, elas aparecerão na guia Regras de transformação de emissão.

Os elementos Subject e AttributeStatement semelhantes ao exemplo abaixo serão enviados na publicação (POST) de SAML do ADFS para o Blackboard Learn depois que o usuário for autenticado:

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

Se os atributos do IdP não forem criptografados na resposta SAML, o Complemento SAML Tracer do navegador Firefox ou o SAML Message Decoder do Chrome poderão ser usados para visualizar os atributos que estão sendo liberados pelo IdP e enviados para o Blackboard Learn durante o processo de autenticação.


Configurar o ADFS para usar SHA-1

  1. Navegue até o Painel de administração.
  2. Em Building Blocks, selecione Building Blocks.
  3. Selecione Ferramentas instaladas.
  4. Localize Provedor de autenticação – SAML na lista. Abra o menu e selecione Configurações.
  5. Em Configurações do algoritmo de assinatura, selecione SHA-1 na lista. Depois de selecionar o Tipo de algoritmo de assinatura, reinicie o Building Block SAML para aplicar as novas configurações.
  6. Clique em Enviar para salvar as alterações.

Configuração complementar de ADFS importante

Por padrão, o ADFS criptografa os atributos que envia usando AES-256. O tempo de execução do Java usado pelo Blackboard Learn não suporta AES-256 fora dos parâmetros convencionais. O usuário não conseguirá fazer o logon via autenticação SAML e as seguintes mensagens de erro ocorrerão nos logs.

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

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

Uma vez que a configuração back-end do Blackboard Learn SaaS normalmente não é suportada, uma opção universal de solução seria abrir uma PowerShell no servidor ADFS e definir a parte confiável criada para o Blackboard Learn para enviar os atributos como não criptografados. Uma vez que a comunicação como um todo é por SSL, isso não reduzirá a segurança da autenticação. Isso também torna a depuração de qualquer problema mais fácil à medida que os atributos podem ser visualizados usando ferramentas de depuração e a reinicialização do sistema do Blackboard Learn não é necessária.

Para definir a parte confiável criada para o Blackboard Learn para enviar os atributos como não criptografados, abra uma PowerShell e execute o comando abaixo, substituindo TargetName pelo nome dado à parte confiável criada anteriormente:

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

Depois dessa alteração, será preciso reiniciar o serviço do ADFS com o comando: Restart-Service ADFSSRV


Definir Provedores de autenticação SAML como ativo

  1. No Blackboard Learn, navegue na Administração do sistema > Autenticação.
  2. Abra o menu ao lado do nome dos Provedores de autenticação SAML e defina-o como Ativo.

Dessa forma, o IdP do ADFS é configurado com sucesso como um Provedor de autenticação SAML e pode ser usado para fazer logon no Blackboard Learn.

  1. Na página de logon do Blackboard Learn, selecione Entrar em uma conta de terceiros.
  2. Selecione o Provedor de autenticação SAML.
  3. Insira as credenciais de logon na página de logon do ADFS.

Redirecionar automaticamente para a página de logon do IdP

Uma vez que a página de logon padrão do Blackboard Learn apresenta os campos de nome de usuário/senha para o provedor de autenticação interno padrão do Blackboard Learn e um pequeno link para SAML Entre usando..., quando uma instituição habilitar a autenticação SAML, elas podem solicitar que os usuários sejam redirecionados automaticamente para o servidor de autenticação do IdP quando eles acessarem primeiro o site do Blackboard Learn.

Uma alternativa para realizar isso na GUI do Blackboard Learn é acessar a Administração do sistema > Autenticação e definir a autenticação interna padrão do Blackboard Learn para Inativo, o que significa que a página de logon não mais é exibida e o usuário é imediatamente redirecionado para o logon de SAML. O problema com essa opção é que ela substitui o URL de logon padrão e impede que qualquer usuário que não seja SAML faça o logon.

Uma solução para evitar esse problema e fornecer quase o mesmo resultado é usar uma Página de login personalizada, para que os usuários sejam redirecionados para a página de login de IdP do provedor de autenticação SAML, mas o link de login padrão continua utilizável.

Você pode criar uma Página de login personalizada para que os usuários sejam redirecionados para a página de login do IdP do provedor de autenticação SAML. O link de login padrão ainda estará utilizável, se necessário.

  1. Verifique se a autenticação interna padrão do Blackboard Learn está ativa.
  2. Acesse a página de logon padrão e copie o local de redirecionamento de provedor, ou seja, Entrar usando... SAML (não abra o link, use Copiar local do link).
  3. Na GUI do Blackboard Learn, navegue na Administração do sistema > Comunidades: Configurações temáticas e temas > Personalizar página de logon.
  4. Selecione Download ao lado do texto da Página de logon padrão para fazer o download do arquivo de logon JSP padrão.
  5. Abra o arquivo de logon JSP baixado com um editor de texto.
  6. Adicione a seguinte amostra de HTML ao arquivo de login JSP e também substitua o texto do URL com o URL que foi copiado na etapa 2 (nos dois locais onde é exibido 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. Retorne para Personalizar página de logon na GUI do Blackboard Learn, selecione a página Usar logon personalizado e então carregue o arquivo de logon JSP atualizado.
  8. Depois de fazer as alterações, selecione Visualização em Personalizar página de logon para confirmar que o redirecionamento está funcionando adequadamente.

Os usuários que forem para o URL principal agora serão redirecionados para a página de logon para o provedor de autenticação SAML. Além disso, os administradores ainda poderão fazer o logon usando a autenticação interna do Blackboard Learn pela página de logon padrão: /webapps/login/?action=default_login (também conhecida como /webapps/login/login.jsp).

Saiba mais sobre como personalizar a página de login na experiência Original

Saiba mais sobre como personalizar a página de login na experiência Ultra