Introdução
 
  Este documento descreve como configurar a SAML (Security Assertion Markup Language) com foco no ASA AnyConnect por meio do Microsoft Azure MFA. 
 
  Pré-requisitos
 
  Requisitos
 
  A Cisco recomenda que você tenha conhecimento destes tópicos:
 
   
   - Conhecimento básico da configuração da VPN do RA no Adaptive Security Appliance (ASA).
- Conhecimento básico do SAML e do Microsoft Azure.
- Licenças do AnyConnect ativadas (apenas APEX ou VPN).
Componentes Utilizados
 
  As informações neste documento são baseadas nestas versões de software e hardware:
 
   
   - Uma assinatura do AD do Microsoft Azure.
- Cisco ASA 9.7+ e Anyconnect 4.6+
- Perfil de VPN do AnyConnect em funcionamento
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
 
  Informações de Apoio
 
  O SAML é uma estrutura baseada em XML para troca de dados de autenticação e autorização entre domínios de segurança. Ele cria um círculo de confiança entre o usuário, um provedor de serviços (SP) e um provedor de identidade (IdP) que permite que o usuário entre uma única vez para vários serviços. O Microsoft Azure MFA integra-se perfeitamente ao dispositivo VPN Cisco ASA para fornecer segurança adicional para os logons do Cisco AnyConnect VPN.
 
  Componentes SAML
 
  Metadados: é um documento baseado em XML que garante uma transação segura entre um IdP e um SP. Permite que o IdP e o SP negociem contratos.
 
  Funções suportadas pelos dispositivos (IdP, SP)
 
  Um dispositivo pode suportar mais de uma função e pode conter valores para uma controladora de armazenamento e um IdP. Sob o campo EntityDescriptor está um IDPSSODescriptor, se as informações contidas forem para um IdP de Signon Único, ou um SPSSODescriptor se as informações contidas forem para um SP de Signon Único. Isso é importante, pois os valores corretos devem ser tirados das seções apropriadas para que o SAML possa ser configurado com êxito.
 
  ID da entidade: esse campo é um identificador exclusivo para um SP ou um IdP. Um único dispositivo pode ter vários serviços e pode usar diferentes IDs de entidade para diferenciá-los. Por exemplo, o ASA tem diferentes IDs de entidade para diferentes grupos de túneis que precisam ser autenticados. Um IdP que autentica cada grupo de túneis tem entradas de ID de entidade separadas para cada grupo de túneis para identificar com precisão esses serviços.
 
  O ASA pode suportar vários IdPs e tem um ID de entidade separado para cada IdP para diferenciá-los. Se um dos lados receber uma mensagem de um dispositivo que não contém uma ID de entidade que tenha sido configurada anteriormente, o dispositivo provavelmente descartará essa mensagem e a autenticação SAML falhará. A ID da entidade pode ser encontrada no campo EntityDescriptor ao lado de entityID.
 
  URLs de serviço: definem o URL para um serviço SAML fornecido pelo SP ou IdP. Para os IdPs, é mais comum ser o Serviço de Logoff Único e o Serviço de Logon Único. Para os SPs, geralmente é o Assertion Consumer Service e o Single Logout Service.
 
  A URL do serviço Single Sign-On encontrada nos metadados do IdP é usada pelo SP para redirecionar o usuário ao IdP para autenticação. Se esse valor estiver configurado incorretamente, o IdP não receberá ou não poderá processar com êxito a solicitação de Autenticação enviada pelo SP.
 
  A URL de serviço do consumidor de asserção encontrada nos metadados da controladora de armazenamento é usada pelo IdP para redirecionar o usuário de volta para a controladora de armazenamento e fornecer informações sobre a tentativa de autenticação do usuário. Se isso for configurado incorretamente, o SP não receberá a asserção (a resposta) ou não poderá processá-la com êxito.
 
  A URL do serviço de logoff único pode ser encontrada tanto no SP quanto no IdP. É usado para facilitar o logoff de todos os serviços SSO do SP e é opcional no ASA. Quando a URL do serviço SLO dos metadados de IdP é configurada na controladora, quando o usuário faz logoff do serviço na controladora, a controladora envia a solicitação ao IdP. Depois que o IdP tiver desconectado com êxito o usuário dos serviços, ele redirecionará o usuário de volta para o SP e usará a URL do serviço do SLO encontrada nos metadados do SP.
 
  Ligações SAML para URLs de serviço: as ligações são o método que o SP usa para transferir informações para o IdP e vice-versa para serviços. Isso inclui Redirecionamento HTTP, POST HTTP e Artefato. Cada método tem uma maneira diferente de transferir dados. O método de vinculação suportado pelo serviço está incluído na definição desses serviços. Por exemplo: SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location= SSO Service >. O ASA não oferece suporte à associação de Artefato. O ASA sempre usa o método de Redirecionamento HTTP para solicitações de autenticação SAML, por isso é importante escolher a URL do Serviço SSO que usa a associação de Redirecionamento HTTP para que o IdP espere isso.
 
  Certificados para operações de assinatura e criptografia
 
  Para fornecer confidencialidade e integridade para as mensagens enviadas entre o SP e o IdP, o SAML inclui a capacidade de criptografar e assinar os dados. O certificado usado para criptografar e/ou assinar os dados pode ser incluído nos metadados para que a extremidade que recebe possa verificar a mensagem SAML e garantir que ela vem da fonte esperada. Os certificados usados para assinatura e criptografia podem ser encontrados nos metadados em KeyDescriptor use=signing e KeyDescriptor use=encryption, respectivamente, e X509Certificate. O ASA não oferece suporte à criptografia de mensagens SAML.
 
  Diagrama de Rede
 
  
 
  Configurar
 
   
  Adicionar o Cisco AnyConnect da Galeria de aplicativos da Microsoft
 
  Etapa 1. Faça logon no Portal do Azure e escolha Azure Ative Diretory. 
 
  
 
  Etapa 2. Como mostrado nesta imagem, escolha Enterprise Applications. 
 
  
 
  Etapa 3. Agora, escolha Novo aplicativo, como mostrado nesta imagem.
 
   
  
 
  Etapa 4. Na seção Adicionar da galeria, digite AnyConnect na caixa de pesquisa, escolha Cisco AnyConnect no painel de resultados e adicione o aplicativo. 
 
  
 
  Etapa 5. Escolha o item de menu Logon Único, conforme mostrado nesta imagem. 
 
  
 
  Etapa 6. Escolha SAML, como mostrado na imagem.
 
  
 
  Passo 7. Edite a Seção 1 com esses detalhes. 
 
   a. Identifier (Entity ID)  - https://<VPN URL>/saml/sp/metadata/<TUNNEL-GROUP NAME> 
 b. Reply URL (Assertion Consumer Service URL) - https://<VPN URL>/+CSCOE+/saml/sp/acs?tgname=<TUNNEL-GROUP NAME> 
 Example: vpn url called asa.example.com and tunnel-group called AnyConnectVPN-1 
 
  
 
  Etapa 8. Na seção Certificado de assinatura SAML, escolha Download para baixar o arquivo de certificado e salve-o em seu computador. 
 
  
 
  Etapa 9. Isso é necessário para a configuração do ASA. 
 
   
   - Identificador do Azure AD - Este é o saml idp em nossa configuração de VPN.
- URL de login - É a URL de entrada.
- URL de logoff - É o URL de saída.

 
  Atribuir Usuário do Azure AD ao Aplicativo
 
  Nesta seção, Test1 está habilitado para usar logon único do Azure, à medida que você concede acesso ao aplicativo Cisco AnyConnect. 
 
  Etapa 1. Na página de visão geral do aplicativo, escolha Usuários e grupos e, em seguida, Adicionar usuário. 
 
  
 
  Etapa 2. Escolha Usuários e grupos na caixa de diálogo Adicionar tarefa. 
 
  
 
  Etapa 3. Na caixa de diálogo Adicionar tarefa, clique no botão Atribuir. 
 
  
 
   
  Configurar ASA para SAML via CLI
 
  Etapa 1. Crie um ponto confiável e importe seu certificado SAML. 
 
  config t 
 crypto ca trustpoint AzureAD-AC-SAML 
   revocation-check none 
   no id-usage 
   enrollment terminal 
   no ca-check 
 crypto ca authenticate AzureAD-AC-SAML 
 -----BEGIN CERTIFICATE----- 
 … 
 PEM Certificate Text you downloaded goes here 
 … 
 -----END CERTIFICATE----- 
 quit 
 
  Etapa 2. Esses comandos provisionam seu IdP SAML. 
 
  webvpn 
 saml idp https://xxx.windows.net/xxxxxxxxxxxxx/ - [Azure AD Identifier] 
 url sign-in https://login.microsoftonline.com/xxxxxxxxxxxxxxxxxxxxxx/saml2 - [Login URL] 
 url sign-out https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0 – Logout URL 
 trustpoint idp AzureAD-AC-SAML - [IdP Trustpoint] 
 trustpoint sp ASA-EXTERNAL-CERT - [SP Trustpoint] 
 no force re-authentication 
 no signature 
 base-url https://asa.example.com 
 
  Etapa 3. Aplique a autenticação SAML a uma configuração de túnel VPN.
 
   
tunnel-group AnyConnectVPN-1 webvpn-attributes 
  saml identity-provider https://xxx.windows.net/xxxxxxxxxxxxx/ 
  authentication saml 
end 
 
write memory
 
 
  Observação: se você fizer alterações na configuração do IdP, precisará remover a configuração saml identity-provider do Grupo de Túneis e reaplicá-la para que as alterações entrem em vigor. 
 
  Verificar
 
  Testar AnyConnect com Autenticação SAML
 
  Etapa 1. Conecte-se à sua URL VPN e insira seu log em detalhes do Azure AD.
 
  Etapa 2. Aprovar solicitação de entrada.
 
  Etapa 3. O AnyConnect está conectado.
 
  
 
  
 
  
 
  Problemas comuns
 
  Incompatibilidade de ID de entidade
 
  Exemplo de depuração: 
 
   [SAML] consume_assertion: o identificador de um provedor é desconhecido para #LassoServer. Para registrar um provedor em um objeto #LassoServer, você deve usar os métodos lasso_server_add_provider() ou lasso_server_add_provider_from_buffer(). 
 
  Problema: Geralmente, significa que o comando saml idp [entityID] na configuração webvpn do ASA não corresponde à ID de entidade do IdP encontrada nos metadados do IdP. 
 
  Solução: verifique a ID da entidade do arquivo de metadados do IdP e altere o comando saml idp [entity id] para corresponder a isso.
 
  Incompatibilidade de horário
 
  Exemplo de depuração: 
 
   [SAML] NotBefore:2017-09-05T23:59:01.896Z NotOnOrAfter:2017-09-06T00:59:01.896Z tempo limite: 0 
 
   [SAML] consume_assertion: a asserção expirou ou não é válida 
 
  Problema 1. Hora do ASA não sincronizada com a hora do IdP.
 
  Solução 1. Configure o ASA com o mesmo servidor NTP usado pelo IdP.
 
  Problema 2. A declaração não é válida entre o tempo especificado.
 
  Solução 2. Modifique o valor de tempo limite configurado no ASA.
 
    
 
  Certificado de Assinatura IdP Incorreto Usado
 
  Exemplo de depuração: 
 
  [Lasso] func=xmlSecOpenSSLEvpSignatureVerify:file=signatures.c:line=493:obj=rsa-sha1:subj=EVP_VerifyFinal:error=18:os dados não correspondem:a assinatura não corresponde 
 
  [SAML] consume_assertion: o perfil não pode verificar uma assinatura na mensagem 
 
  Problema: o ASA não pode verificar a mensagem assinada pelo IdP ou não há assinatura para o ASA verificar. 
 
  Solução: Verifique o certificado de assinatura IdP instalado no ASA para certificar-se de que ele corresponde ao que é enviado pelo IdP. Se isso for confirmado, certifique-se de que a assinatura esteja incluída na resposta SAML. 
 
    
 
  Audiência de Asserção Inválida
 
  Exemplo de depuração: 
 
  [SAML] consume_assertion: audiência de asserção inválida 
 
  Problema: o IdP define o público incorreto.
 
  Solução: corrija a configuração da Audiência no IdP. Ele deve corresponder à ID da entidade do ASA. 
 
    
 
  URL incorreta para o Serviço de Consumidor de Asserção
 
  Exemplo de depuração: não é possível receber depurações após o envio da solicitação de autenticação inicial. O usuário pode inserir credenciais no IdP, mas o IdP não é redirecionado para o ASA. 
 
  Problema: o IdP está configurado para a URL incorreta do Serviço de Consumidor de Asserção. 
 
  Solução(ões): verifique a URL base na configuração e certifique-se de que esteja correta. Verifique os metadados ASA com show para certificar-se de que a URL do Assertion Consumer Service esteja correta. Para testá-lo, procure-o. Se ambos estiverem corretos no ASA, verifique o IdP para certificar-se de que o URL está correto.
 
    
 
  Alterações de configuração de SAML que não têm efeito
 
  Exemplo: depois que uma URL de logon único é modificada ou alterada, o certificado SP, o SAML ainda não funciona e envia as configurações anteriores. 
 
  Problema: o ASA precisa regenerar seus metadados quando houver uma alteração de configuração que o afete. Ele não faz isso automaticamente. 
 
  Solução: depois que as alterações forem feitas, no grupo de túneis afetado, remova e reaplique o comando saml idp [entity-id]. 
 
  Troubleshooting
 
  A maioria das soluções de problemas SAML envolve uma configuração incorreta que pode ser encontrada quando a configuração SAML é verificada ou quando as depurações são executadas. debug webvpn saml 255 pode ser usado para solucionar a maioria dos problemas, no entanto, em cenários onde essa depuração não fornece informações úteis, depurações adicionais podem ser executadas: 
 
  debug webvpn saml 255 
debug webvpn 255  
debug webvpn session 255 
debug webvpn request 255 
 
  Informações Relacionadas