Introduction
Este documento descreve como configurar o SSO (Single Sign-On, login único) no Cisco Unified Communications Manager (CUCM).
Prerequisites
Requirements
A Cisco recomenda que você conheça os tópicos:
- CUCM
- Serviços de Federação do Ative Diretory (ADFS)
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- CUCM 11.5.1.13900-52 (11.5.1SU2)
- ADFS 2.0.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Configurar
Consulte Configuração de Login Único no CUCM.
Guia de implantação do SSO SAML para aplicativos de comunicação unificada da Cisco, versão 11.5(1).
SAML RFC 6596.
Verificar
No momento, não há procedimento de verificação disponível para esta configuração.
Troubleshoot
Fluxo de login no SSO

Decodificação da resposta SAML
Usando plugins no Bloco de Notas++
Instalar estes plugins:
Notepad++ Plugin -> MIME Tools--SAML DECODE
Notepad++ Plugin -> XML Tools -> Pretty Print(XML only – with line breaks)
Nos registros SSO, procure a string "authentication.SAMLAuthenticator - SAML Response is ::" que contém a resposta codificada.
Use este plugin ou decodificação SAML on-line para obter a resposta XML. A resposta pode ser ajustada em um formato legível com o uso do plugin Pretty Print instalado.
Na versão mais recente da resposta SAML do CUCM está no formato XML que pode ser encontrado pesquisando "SPACSUtils.getResponse: got response=<samlp:
Resposta xmlns:samlp="e, em seguida, imprima com o uso do plug-in Impressão Pretty.
Use o conversor:
Esse utilitário pode ser usado para obter o tráfego em tempo real e decodificá-lo. Aqui está o guia para o mesmo; https://www.techrepublic.com/blog/software-engineer/using-fiddler-to-debug-http/.
Solicitação SAML:
ID="s24c2d07a125028bfffa7757ea85ab39462ae7751f" Version="2.0" IssueInstant="2017-07-15T11:48:26Z" Destination="https://win-91uhcn8tt3l.emeacucm.com/adfs/ls/" ForceAuthn="false" IsPassive="false" AssertionConsumerServiceIndex="0">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">cucmsso.emeacucm.com</saml:Issuer>
<samlp:NameIDPolicy xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" SPNameQualifier="cucmsso.emeacucm.com" AllowCreate="true"/>
</samlp:AuthnRequest>
Resposta SAML (não criptografada):
<samlp:Response ID="_53c5877a-0fff-4420-a929-1e94ce33120a" Version="2.0" IssueInstant="2017-07-01T16:50:59.105Z" Destination="https://cucmsso.emeacucm.com:8443/ssosp/saml/SSO/alias/cucmsso.emeacucm.com" Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified" InResponseTo="s24c2d07a125028bfffa7757ea85ab39462ae7751f" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://win-91uhcn8tt3l.emeacucm.com/adfs/services/trust</Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
</samlp:Status>
<Assertion ID="_0523022c-1e9e-473d-9914-6a93133ccfc7" IssueInstant="2017-07-01T16:50:59.104Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>http://win-91uhcn8tt3l.emeacucm.com/adfs/services/trust</Issuer>
<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="#_0523022c-1e9e-473d-9914-6a93133ccfc7">
<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>9OvwrpJVeOQsDBNghwvkLIdnf3bc7aW82qmo7Zdm/Z4=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>VbWcKUwvwiNDhUg5AkdqSzQOmP0qs5OT2VT+u1LivWx7h9U8/plyhK3kJMUuxoG/HXPQJgVQaMOwNq/Paz7Vg2uGNFigA2AFQsKgGo9hAA4etfucIQlMmkeVg+ocvGY+8IzaNVfaUXSU5laN6zriTArxXwxCK0+thgRgQ8/46vm91Skq2Fa5Wt5uRPJ3F4eZPOEPdtKxOmUuHi3Q2pXTw4ywZ/y89xPfSixNQEmr10hpPAdyfPsIFGdNJJwWJV4WjNmfcAqClzaG8pB74e5EawLmwrfV3/i8QfR1DyU5yCCpxj02rgE6Wi/Ew/X/l6qSCzOZEpl7D8LwAn74KijO+Q==</ds:SignatureValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIC5DCCAcygAwIBAgIQZLLskb6vppxCiYP8xOahQDANBgkqhkiG9w0BAQsFADAuMSwwKgYDVQQDEyNBREZTIFNpZ25pbmcgLSBXSU4ySzEyLnJrb3R1bGFrLmxhYjAeFw0xNTA2MjIxOTE2NDRaFw0xNjA2MjExOTE2NDRaMC4xLDAqBgNVBAMTI0FERlMgU2lnbmluZyAtIFdJTjJLMTIucmtvdHVsYWsubGFiMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApEe09jnZXEcEC7s1VJ7fMXAHPXj7jgOOcs9/Lzxrx4c68tePGItrEYnzW9vLe0Dj8OJET/Rd6LsKvuMQHfcGYqA+XugZyHBrpc18wlhSmMfvfa0jN0Qc0lf+a3j72xfI9+hLtsqSPSnMp9qby3qSiQutP3/ZyXRN/TnzYDEmzur2MA+GP7vdeVOFXlpENrRfaINzc8INqGRJ+1jZrm+vLFvX7YwIL6aOpmjaxcPoxDcjgEGMYO/TaoP3eXutX4FuJV5R9oAvbqD2F+73XrvP4e/wHi5aNrHrgiCnuBJTIxHwRGSoichdpZlvSB15v8DFaQSVAiEMPj1vP/4rMkacNQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQA5uJZI0K1Xa40H3s5MAo1SG00bnn6+sG14eGIBe7BugZMw/FTgKd3VRsmlVuUWCabO9EgyfgdI1nYZCciyFhts4W9Y4BgTH0j4+VnEWiQg7dMqp2M5lykZWPS6vV2uD010sX5V0avyYi3Qr88vISCtniIZpl24c3TqTn/5j+H7LLRVI/ZU38Oa17wuSNPyed6/N4BfWhhCRZAdJgijapRG+JIBeoA1vNqN7bgFQMe3wJzSlLkTIoERWYgJGBciMPS3H9nkQlP2tGvmn0uwacWPglWR/LJG3VYoisFm/oliNUF1DONK7QYiDzIE+Ym+vzYgIDS7MT+ZQ3XwHg0Jxtr8</ds:X509Certificate>
</ds:X509Data>
</KeyInfo>
</ds:Signature>
<Subject>
<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" NameQualifier="http:///win-91uhcn8tt3l.emeacucm.com/com/adfs/services/trust" SPNameQualifier="cucmsso.emeacucm.com">CHANDMIS\chandmis</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<SubjectConfirmationData InResponseTo="s24c2d07a125028bfffa7757ea85ab39462ae7751f" NotOnOrAfter="2017-07-01T16:55:59.105Z" Recipient="https://cucmsso.emeacucm.com:8443/ssosp/saml/SSO/alias/cucmsso.emeacucm.com" />
</SubjectConfirmation>
</Subject>
<Conditions NotBefore="2017-07-01T16:50:59.102Z" NotOnOrAfter="2017-07-01T17:50:59.102Z">
<AudienceRestriction>
<Audience>ccucmsso.emeacucm.com</Audience>
</AudienceRestriction>
</Conditions>
<AttributeStatement>
<Attribute Name="uid">
<AttributeValue>chandmis</AttributeValue>
</Attribute>
</AttributeStatement>
<AuthnStatement AuthnInstant="2017-07-01T16:50:59.052Z" SessionIndex="_0523022c-1e9e-473d-9914-6a93133ccfc7">
<AuthnContext>
<AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>
</Assertion>
</samlp:Response>
Version="2.0" :- The version of SAML being used.
InResponseTo="s24c2d07a125028bfffa7757ea85ab39462ae7751f" :- The id for SAML Request to which this reponse corresponds to
samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success :- Status Code of SAML reponse. In this case it is Success.
<Issuer>http://win-91uhcn8tt3l.emeacucm.com/adfs/services/trust</Issuer> :- IdP FQDN
SPNameQualifier="cucmsso.emeacucm.com" :- Service Provider(CUCM) FQDN
Conditions NotBefore="2017-07-01T16:50:59.102Z" NotOnOrAfter="2017-07-01T17:50:59.102Z :- Time range for which the session will be valid.
<AttributeValue>chandmis</AttributeValue> :- UserID entered during the login
Caso a resposta SAML seja criptografada, você não poderá ver as informações completas e terá que desabilitar a criptografia na Detecção e Prevenção de Intrusão (IDP) para ver a resposta completa. O detalhe do certificado usado para criptografia está em "ds:X509IssuerSerial" da resposta SAML.
Logs e comandos CLI
Comandos CLI:
utils sso disable
Este comando desativa a autenticação baseada em ambos (SSO OpenAM ou SSO SAML). Esse comando lista os aplicativos da Web para os quais o SSO está ativado. Insira Sim quando solicitado para desabilitar SSO para o aplicativo especificado. Você deve executar esse comando em ambos os nós se estiver em um cluster. O SSO também pode ser desabilitado na Interface Gráfica do Usuário (GUI) e selecione o botão Desabilitar, em SSO específico na Administração do Cisco Unity Connection.
Sintaxe do comando
utils sso disable
status do utils sso
Esse comando exibe os parâmetros de status e configuração do SSO SAML. Ele ajuda a verificar o status do SSO, ativado ou desativado, em cada nó individualmente.
Sintaxe do comando
status do utils sso
utils sso enable
Esse comando retorna uma mensagem de texto informativa que solicita que o administrador possa ativar o recurso SSO somente da GUI. SSO baseado em OpenAM e SSO baseado em SAML não podem ser habilitados com este comando.
Sintaxe do comando
utils sso enable
utils sso recovery-url enable
Esse comando ativa o modo SSO de URL de recuperação. Também verifica se este URL funciona com êxito. Você deve executar esse comando em ambos os nós se estiver em um cluster.
Sintaxe do comando
utils sso recovery-url enable
utils sso recovery-url disable
Este comando desativa o modo SSO de URL de recuperação nesse nó. Você deve executar esse comando em ambos os nós se estiver em um cluster.
Sintaxe do comando
utils sso recovery-url disable
set samltrace level <trace-level>
Esse comando permite rastreamentos específicos e níveis de rastreamento que podem localizar qualquer erro, depuração, informação, aviso ou fatal. Você deve executar esse comando em ambos os nós se estiver em um cluster.
Sintaxe do comando
set samltrace level <trace-level>
show samltrace level
Esse comando exibe o nível de log definido para SAML SSO. Você deve executar esse comando em ambos os nós se estiver em um cluster.
Sintaxe do comando
show samltrace level
Rastreios para observar o momento da solução de problemas:
Por padrão, os logs SSO não são definidos para o nível detalhado.
Primeiro execute o comando set samltrace level debug para definir os níveis de log como debug, reproduzir o problema e coletar esses conjuntos de logs.
De RTMT:
Cisco Tomcat
Cisco Tomcat Security
SSO da Cisco
Problemas comuns
Valor incorreto para identificador exclusivo (UID):
Deve ser exatamente UID e, se não for o caso, o CUCM não consegue entender isso.

Regra de reivindicação incorreta ou política de ID de nome errada:
Provavelmente, nenhum nome de usuário e senha é solicitado nesse cenário.
Não haverá nenhuma asserção válida na resposta SAML e o Código de status será como:
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy"/>
Verifique se a regra de reivindicação está definida corretamente no lado IDP.
Diferença de caso/nome definida na regra de reivindicação:
O CUCM FQDN na regra de reivindicação deve corresponder exatamente ao especificado no servidor real.
Você pode comparar a entrada no arquivo xml de metadados do IDP com a entrada no CUCM executando o comando show network cluster/show network etho details na CLI do CUCM.
Hora incorreta:
O NTP entre o CUCM e o IDP tem uma diferença maior que os 3 segundos permitidos no Guia de implantação.
Assinante da Asserção Não Confiável:
No momento da troca de metadados entre o IDP e o CUCM (provedor de serviços).
Os certificados são trocados e, em caso de revogação do certificado, os metadados devem ser novamente trocados.
Configuração incorreta/Sem configuração de DNS
O DNS é o requisito principal para que o SSO funcione. Execute show network etho detail, utils diagnose test na CLI para verificar se o DNS/Domínio está configurado corretamente.
Defeitos conhecidos
CSCuj66703 
O certificado de assinatura do ADFS renove e adiciona dois certificados de assinatura às respostas do IDP ao CUCM (SP), fazendo com que você fique com defeito. Você deve excluir o certificado de assinatura que não é obrigatório
CSCvf63462 
Quando você navega para a página SSO SAML do CCM Admin, é solicitado que você informe "Os seguintes servidores falharam durante a tentativa de obter o status SSO" seguido do nome do nó.
CSCvf96778 
O SSO baseado em CTI falha ao definir o servidor CUCM como endereço IP no CCMAdmin//System/Server.