Este documento descreve como configurar o Microsoft Entra ID como um provedor de identidade SAML para o Cisco ISE Sponsor Portal.
A Cisco recomenda que você tenha conhecimento destes tópicos:
As informações neste documento são baseadas nas seguintes versões de hardware e software:
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.

1. No ISE, navegue para Administração > Gerenciamento de identidades > Fontes de identidade externas > Provedores de ID SAML e clique no botão Adicionar.
2. Informe o Nome do Provedor de ID e clique em Submeter para salvá-lo. O Nome do provedor de ID é significativo apenas para o ISE, como mostrado na imagem.

1. Navegue até Centros de trabalho > Acesso para convidados > Portais e componentes > Portais de patrocinadores e selecione seu Portal de patrocinadores. Neste exemplo, o Portal do patrocinador (padrão) é usado.

2. Expanda Configurações do Portal e selecione o novo Provedor de Identidade SAML em Sequência de Origem de Identidade. Configure o Nome de domínio totalmente qualificado (FQDN) para o portal do patrocinador e observe a porta HTTPS (8445 é o padrão do Portal do patrocinador). Click Save.

1. Navegue de volta para o provedor SAML e abra a guia Informações do provedor de serviços. Confirme se o Portal do patrocinador aparece em "Inclui os seguintes portais" — o portal deve estar vinculado ao IdP antes da exportação, ou os metadados não o incluem. Clique em Exportar.

2. No XML baixado, observe:
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
entityID="http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2">
<md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" ...>
<md:KeyDescriptor use="signing">
<ds:X509Certificate>MIIFUDCC...(ISE portal signing certificate)...</ds:X509Certificate>
</md:KeyDescriptor>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLogoutRequest.action?portal=1f789a00-..."
ResponseLocation="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLogoutResponse.action"/>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
...(additional NameIDFormat entries)...
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action" index="0"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://192.168.1.204:8445/sponsorportal/SSOLoginResponse.action" index="1"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://prox-ise04.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action" index="2"/>
</md:SPSSODescriptor>
</md:EntityDescriptor>
Caution: O XML também contém um SSOLogoutRequest.action?portal=... URL no atributo Local. Esse não é o valor a ser usado como o URL de logoff no Entra ID — usá-lo causa o erro "Falha de logoff do SSO" descrito na seção Solução de problemas. O valor correto termina em SOLogoutResponse.action.
Note: Reexportar e reimportar estes metadados sempre que qualquer uma destas alterações: um novo nó do ISE está registrado, um nome de host do nó ou alterações de IP, as alterações de FQDN do portal do Patrocinador, alteração de configurações de porta ou interface ou um balanceador de carga está associado. Se o IdP mantiver metadados obsoletos, ele rejeitará solicitações de autenticação. O ZIP exportado também inclui um arquivo Leiame com instruções de configuração por IdP.
De acordo com o arquivo XML:
SingleLogoutService ResponseLocation="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLogoutResponse.action"
entityID="http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2"
Local de AssertionConsumerService="https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action"
Local de AssertionConsumerService="https://192.168.1.204:8445/sponsorportal/SSOLoginResponse.action"
Local de AssertionConsumerService="https://prox-ise04.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action"
Note: Este laboratório usa um único nó do ISE, de modo que o XML exportado contém apenas esses nós três entradas AssertionConsumerService: o FQDN do portal do patrocinador, o IP do nó e o FQDN do nó. Em uma implantação de vários nós, o XML lista as entradas para cada nó que atende ao portal do patrocinador (o FQDN do portal, mais um IP e um FQDN para cada nó). Adicione tudo isso como URLs de resposta no Entra ID, não apenas aqueles de um nó. Se a URL de um nó estiver faltando nas URLs de resposta, a autenticação falhará quando o usuário for redirecionado para esse nó.
1. Faça login no Centro de Administração do Microsoft Entra.

2. Navegue até Entra ID > Usuários > Novo usuário > Criar novo usuário e crie um usuário de teste somente de nuvem.

Note: Use um usuário somente de nuvem membro, não um convidado convidado — os convidados autenticam em seu locatário residencial e o formato NameID resultante impede que o ISE extraia o nome de usuário. Um novo usuário deve alterar a senha na primeira entrada, e os usuários com padrões de segurança também exigem o registro de MFA; conclua ambas as etapas uma vez antes da seção Verificar.
1. Navegue até Entra ID > Grupos > Novo grupo.

2. Mantenha o Tipo de Grupo como Segurança. Configure o nome do grupo como mostrado na imagem:

3. Abra a página Membros do grupo, clique em Adicionar membros, procure o usuário de teste, selecione-o e clique em Selecionar.

4. Anote a ID de Objeto de Grupo, nesta tela, ela é 48f07fce-26e5-41e5-a82b-ed095b32bab8 para o Grupo Patrocinador.

1. Navegue até Entra ID > Aplicativos corporativos > Todos os aplicativos > Novo aplicativo.

2. Selecione Criar sua própria aplicação.

3. Informe um nome, selecione "Integrar qualquer outro aplicativo que você não encontre na galeria (Não galeria)" e clique em Criar.

1. No aplicativo, navegue até Usuários e grupos > Adicionar usuário/grupo e atribua o grupo criado anteriormente.

Adicionar usuário/grupo:
Note: Se o seu locatário estiver no Microsoft Entra ID Free, a atribuição de grupo não estará disponível — atribua o usuário de teste diretamente; todas as outras etapas são idênticas.

1. Como resultado, o menu Usuários e grupos do seu aplicativo deve ser preenchido com o Grupo selecionado.

1. No aplicativo, navegue para Configurar logon único.

2. Selecione SAML e clique em Editar ao lado de Configuração SAML Básica.

3. Preencha o Identificador (ID da Entidade) com o valor entityID do XML de metadados de SP do ISE e a URL de Resposta com cada Localização AssertionConsumerService listada ali. Para Url de Logoff, use o valor SingleLogoutService ResponseLocation. Deixe a URL de início de sessão e o Estado de retransmissão vazios e clique em Salvar.

1. Clique em Editar ao lado de Atributos e Reivindicações.

2. Em seguida, adicione uma declaração de grupo.

3. Selecione Grupos de segurança com o atributo de origem ID do grupo e clique em Salvar. Deixe todo o resto em seus padrões.

Caution: Não marque "Personalizar o nome da declaração de grupo". Renomear a declaração exigiria o mesmo nome personalizado no campo Atributo de Associação de Grupo do ISE, e o restante deste documento assume o nome da declaração padrão.
4. Se quiser personalizá-lo de qualquer forma, você pode, mas o mesmo nome personalizado deve ser inserido no campo Group Membership Attribute (Atributo de associação de grupo) no ISE. Por exemplo, se você inserir Grupo patrocinador em ID do Entra, o campo ISE deverá conter exatamente Grupo patrocinador. No Entra ID, a configuração se parece com isto:

5. Anote o nome da Reivindicação para o grupo.

1. Clique em Download no XML de Metadados de Federação no Certificado de Assinatura SAML.

2. Os metadados de federação baixados são assinados pela Microsoft e transportam todas as necessidades do ISE; a ID da entidade IdP, os pontos finais SSO/SLO e o certificado de autenticação de token (abreviado aqui):
<EntityDescriptor entityID="https://sts.windows.net/<Tenant-ID>/">
<Signature>...(signed by Microsoft)...</Signature>
...(WS-Fed RoleDescriptor sections — not used by ISE)...
<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="signing">
<X509Certificate>MIIC8DCC...(Entra ID token signing certificate)...</X509Certificate>
</KeyDescriptor>
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://login.microsoftonline.com/<Tenant-ID>/saml2"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://login.microsoftonline.com/<Tenant-ID>/saml2"/>
</IDPSSODescriptor>
</EntityDescriptor>
3. Na importação (Etapa 4), esses campos se tornam os URLs de Logon Único/Saída e a entrada Certificados de Autenticação na guia Config. do Provedor de Identidade.
Note: O certificado de assinatura do token de ID da Entra é válido por três anos. Quando ele gira, baixe novamente o XML de Metadados de Federação e importe-o novamente para o ISE, ou o SSO pára de funcionar abruptamente. Configure o e-mail de notificação no certificado para obter um aviso de expiração.
1. Navegue até Administração > Gerenciamento de Identidades > Origens de Identidades Externas > Provedores de Id SAML > [seu provedor], abra a guia Configuração do Provedor de Identidade, clique em Escolher Arquivo, selecione o XML de Metadados de Federação e clique em Salvar. As URLs de Logon/Saída Únicos e o certificado de autenticação são preenchidos.

Note: Os metadados SP que as versões atuais do ISE exportam declaram WantAssertionsSigned="false" (versões mais antigas declaradas verdadeiras); o atributo agora rastreia a caixa de seleção Exigir asserções assinadas na guia Configurações avançadas, que é desmarcada por padrão. Isso não significa que asserções não assinadas sejam aceitas. O ISE sempre requer pelo menos uma assinatura na resposta SAML ou na asserção, mesmo com ambas as caixas de seleção desmarcadas.
Guia Configurações avançadas opcionais: Atributo de identidade (padrão: Nome do assunto) seleciona de onde o nome de usuário é retirado; o atributo Email deve ser configurado se os patrocinadores filtrarem a lista de convidados com aprovação pendente; A solicitação de autenticação de assinatura controla a assinatura da solicitação e tem precedência sobre a caixa de seleção "Deseja que as solicitações de autenticação sejam assinadas" somente leitura da guia anterior.

1. Abra a guia Grupos e, no Atributo de associação de grupo, cole o Nome da reivindicação da Etapa 3:
http://schemas.microsoft.com/ws/2008/06/identity/claims/groups
2. Clique em Adicionar. Em Nome em Asserção, insira o ID de Objeto do grupo capturado na Etapa 2 (esse valor deve corresponder exatamente). Em Nome no ISE, insira qualquer rótulo local significativo (um alias de formato livre usado somente nos menus do ISE). Clique em OK e em Salvar.

3. Isso cria um mapeamento entre o nome do Grupo no Entra e do Grupo que pode ser usado no ISE.
1. Navegue até Centros de trabalho > Acesso de convidado > Portais e componentes > Grupos de patrocinadores e selecione o Grupo de patrocinadores para mapear. Neste exemplo, ALL_ACCOUNTS (padrão).

2. Clique em Membros..., mova a entrada IdP:Nome no ISE para Grupos de Usuários Selecionados, clique em OK e em Salvar.

Note: Um patrocinador recebe as permissões de todos os grupos de patrocinadores correspondentes. Mapeie o grupo de ID Entra para um único grupo de patrocinadores, a menos que o acúmulo de permissões seja intencional.
1. Inicie o Portal do Patrocinador no link Portal Test URL. O ISE redireciona para a página de entrada da Microsoft; autenticar com as credenciais do usuário de teste.

2. Após a autenticação, o navegador retorna ao portal e a AUP é exibida. Após a aceitação, o patrocinador tem as permissões do Grupo de patrocinadores mapeado.

3. A desconexão do Menu de Boas-Vindas encerra a sessão do portal e a sessão do SSO de forma limpa.

O SSO iniciado por IdP não é suportado: o Cisco ISE não suporta o SAML iniciado por IdP. O botão Testar Logon Único ("Testar este aplicativo") no Microsoft Entra ID sempre falha para esta integração — o POST iniciado por IdP atinge SSOLoginResponse.action e o portal retorna HTTP [400] Bad Request ("A solicitação é inválida devido a sintaxe mal formada ou dados inválidos"). Este é um comportamento esperado, não um erro de configuração. Sempre verifique no portal do patrocinador.

A autenticação SAML acontece entre o navegador e o Microsoft Entra ID; erros podem surgir diretamente do IdP antes que o ISE esteja envolvido.
Problema 1 — Senha incorreta

O erro aparece na página de entrada da Microsoft; nenhum dado de usuário atingiu o ISE. No lado do ISE, os registros mostram apenas o trecho de saída e depois nada. No guest.log, o fluxo do portal alcança SSO_LOGIN, cria a solicitação SAML, redireciona o navegador para o IdP e a sessão nunca retorna:
01:20:46 DEBUG StepExecutor -- StepTran for Step=INIT => tranEnum=PROCEED_SSO, toStep=SSO_LOGIN
01:20:46 DEBUG SSOLoginConfigHandler -- Redirect to IDP:
https://login.microsoftonline.com/<Tenant-ID>/saml2?SAMLRequest=jZNRc6IwFIX...
01:20:46 INFO ISEPortalControllerUtils -- forwarding to: pages/ssoLoginRequest.jsp
(the portal session ends here -- no SSOLoginResponse is ever POSTed back)
O ise-psc.log conta a mesma história do lado do framework SAML:
01:20:46 DEBUG SAMLFacadeImpl -- SAML request - providerId (as should be found in IdP
configuration): http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2
01:20:46 DEBUG SAMLFacadeImpl -- SAML request - spUrlToReturnTo:
https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action
01:20:46 DEBUG SAMLFacadeImpl -- SignAuthenRequest configuration is - off
01:20:46 DEBUG MessageComposer -- local cert is null, request won't be signed
(capture ends here -- ISE never receives a SAML response)
O Entra ID bloqueia a entrada antes que qualquer resposta SAML seja emitida.

O nguest.log mostra apenas o redirecionamento que está sendo preparado, e o ise-psc.log mostra nenhuma atividade SAML. A falha está no lado do IdP:
16:50:21 INFO ISEPortalControllerUtils -- forwarding to: pages/ssoLoginRequest.jsp
(nothing follows -- the user never returns from the IdP)
Corrigir: Atribua o usuário ou grupo à aplicação empresarial (Etapa 2.4).

Isso ocorre quando o URL de logoff no ID do Entra foi configurado com o SSOLogoutRequest.action?portal=... URL em vez de SSOLogoutResponse.action. No guest.log, o logoff é iniciado e a resposta retornada não pode ser processada:
16:54:12 INFO ISEPortalControllerUtils -- forwarding to: /pages/ssoLogoutRequest.jsp
16:54:13 ERROR SponsorSSOLogin -- SAML Response is invalid or subject is NULL!
16:54:13 INFO ISEPortalControllerUtils -- forwarding to: pages/error.jsp
Reparar: corrija o URL de logout na Configuração SAML Básica.
Quando o certificado de autenticação do token de ID Entra é girado (vida útil de três anos), um novo certificado é ativado e o XML de Metadados da Federação não é reimportado para o ISE, cada login falha com um "Authentication failed" genérico no portal, mesmo que nada tenha sido visivelmente alterado em nenhum dos lados.

O ise-psc.log declara a causa real explicitamente:
16:58:30,429 WARN apache.xml.security.signature.XMLSignature -- Signature verification failed.
16:58:30,430 ERROR cpm.saml.framework.impl.SAMLFacadeImpl -- SAML Response: processing failed:
com.cisco.cpm.saml.exceptions.SAMLException: Assertion signature did not validate
against the IdP signature certificate
Caused by: org.opensaml.xml.validation.ValidationException: Signature did not validate
against the credential's key
Reparar: Baixe novamente o XML de Metadados de Federação da ID da Entra e importe-o novamente no ISE.
O timeout de ociosidade da sessão do SSO do portal é padronizado como 5 minutos (configurável por portal e este laboratório usa 10). Um botão "Sign On Again" pode ser adicionado à página de erro do portal através do campo Optional Content (Conteúdo opcional).
Como as mensagens SAML trafegam pelo navegador, as ferramentas do desenvolvedor do navegador (F12 > Guia Rede) exibem a troca inteira. Reproduza o login com a guia Rede aberta e procure o POST para SSOLoginResponse.action. No momento em que o navegador entregar a asserção SAML ao ISE:

O nível de log dos componentes deve ser alterado no ISE. Navegue até Operações > Solução de problemas > Assistente de depuração > Configuração do log de depuração.
| Nome do componente | Nível de log | Nome do arquivo de log |
| acesso de convidados | DEBUG | guest.log |
| portal-web-action | DEBUG | guest.log |
| opensaml | DEBUG | ise-psc.log |
| saml | DEBUG | ise-psc.log |
Conjunto de trabalho de depurações no momento da execução correta do fluxo (ise-psc.log):
1. O usuário é redirecionado para a URL do IdP a partir do Portal do patrocinador.
2026-08-27 01:55:58,021 DEBUG [admin-http-pool3][[]] guestaccess.apiservices.portal.view.PortalConfigConverter -
::::- hostName =sponsor.n3tgeek.com will be applied to URL!
reqUtl =https://sponsor.n3tgeek.com:8445/sponsorportal/PortalSetup.action
2026-08-27 01:55:58,036 DEBUG [https-jsse-nio-192.168.1.204-8445-exec-2][[]]
cisco.ise.portalwebaction.utils.PortalSessionUtil -::::- Portal URL:
https://sponsor.n3tgeek.com:8445/sponsorportal/PortalSetup.action
2026-08-27 01:55:58,037 DEBUG cisco.ise.portalwebaction.actions.BasePortalAction -::::-
Action com.cisco.ise.portalwebaction.actions.PortalSetupAction Complete for request /sponsorportal/PortalSetup.action
2. A resposta SAML é recebida do navegador:
2026-08-27 01:56:19,384 DEBUG cpm.saml.framework.impl.SAMLFacadeImpl -::::-
SAML Response: statusCode:urn:oasis:names:tc:SAML:2.0:status:Success
IdP URI: https://sts.windows.net/<Tenant-ID>/
SP URI: http://CiscoISE/1f789a00-ad9d-4ec0-9a47-ce4909a65db2
Assertion Consumer URL: https://sponsor.n3tgeek.com:8445/sponsorportal/SSOLoginResponse.action
3. A análise do atributo (asserção) foi iniciada:
cpm.saml.framework.validators.SAMLSignatureValidator -::::- no signature in response
cpm.saml.framework.validators.SAMLSignatureValidator -::::- Validating signature of assertion
org.opensaml.xml.signature.SignatureValidator -::::- Signature validated with key from supplied credential
cpm.saml.framework.validators.SAMLSignatureValidator -::::- Assertion signature validated succesfully
cpm.saml.framework.validators.AssertionValidator -::::- Conditions succesfully validated
4. O nome de usuário e o atributo de grupo (48f07fce-26e5-41e5-a82b-ed095b32bab8) são extraídos da asserção e as passagens de autenticação:
SAMLUtils::getUserNameFromAssertion: username value from Subject is=[alice@lab.n3tgeek.com]
loginInfo: ... format=urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
[cacheGroupAttr] Adding to cache ExternalGroup values=<48f07fce-26e5-41e5-a82b-ed095b32bab8>
AuthenticatePortalUser - added user groups from SAML response to AuthenticationResult,
all retrieved groups:[48f07fce-26e5-41e5-a82b-ed095b32bab8]
Authenticate SAML User - result:PASSED
5. O grupo de usuários é adicionado aos resultados da autenticação para que possa ser usado pelo Portal e a autenticação SAML é passada:
2020-09-16 10:44:11,320 DEBUG [https-jsse-nio-10.48.23.86-8445-exec-8][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- AuthenticatePortalUser - added user groups from SAML response to AuthenticationResult, all retrieved groups:[f626733b-eb37-4cf2-b2a6-c2895fd5f4d3]
2020-09-16 10:44:11,320 DEBUG [https-jsse-nio-10.48.23.86-8445-exec-8][] cpm.saml.framework.impl.SAMLFacadeImpl -::::- Authenticate SAML User - result:PASSED
Uma captura feita na interface do ISE (Operações > Solução de problemas > Ferramentas de diagnóstico > Despejo TCP) durante um login bem-sucedido de patrocinador mostra apenas dois tipos de tráfego. A resolução DNS do cliente do FQDN do portal e as sessões TLS do cliente para o portal na porta 8445, com o FQDN do portal visível como a Indicação de Nome do Servidor (SNI) do TLS.
| Conversa | Direção | O que é |
|---|---|---|
| cliente <-> ISE:8445 (TLS, SNI = FQDN do portal) | navegador -> PSN | Páginas do portal + SAML POST (ACS) |
| cliente -> DNS: FQDN do portal | navegador -> resolvedor | Resolução do nome do portal |
| nenhum tráfego para login.microsoftonline.com | — | O segmento de IdP nunca toca o ISE |
Embora tudo esteja criptografado, o Hello do cliente TLS viaja em texto claro e transporta o FQDN do portal como a Indicação de Nome do Servidor (SNI). Esse é o único local na captura em que você pode fazer uma correspondência positiva de um fluxo TCP com o portal do patrocinador.
Frame 96: 1981 bytes on wire
Internet Protocol Version 4, Src: 192.168.1.162 (client), Dst: 192.168.1.204 (ISE PSN)
Transmission Control Protocol, Src Port: 43395, Dst Port: 8445
Transport Layer Security
TLSv1 Record Layer: Handshake Protocol: Client Hello
Handshake Protocol: Client Hello
Extension: server_name (len=24)
Server Name Indication extension
Server Name: sponsor.n3tgeek.com
Extension: supported_versions (len=7) TLS 1.3, TLS 1.2
8445 sponsor.n3tgeek.com (x12 -- the portal leg, to ISE)
443 login.microsoftonline.com (the IdP leg -- never seen on ISE)
443 aadcdn.msauth.net (Microsoft sign-in page assets)
443 login.live.com / login.microsoft.com
(unrelated background traffic omitted for clarity)
Note: O ISE nunca se comunica com a ID da Entra durante a autenticação do patrocinador. A solicitação e a resposta SAML trafegam pelo navegador do usuário (redirecionamento e associações POST). Isso significa que o nó do ISE não precisa de conectividade de saída com a Microsoft para que o SSO do portal funcione e, durante a solução de problemas, o segmento do IdP deve ser capturado no cliente, não no ISE.
| Revisão | Data de publicação | Comentários |
|---|---|---|
2.0 |
02-Oct-2026
|
Ortografia atualizada, gramática, linhas horizontais inseridas para separar seções para legibilidade, erros corrigidos no CCW, texto alternativo atualizado. |
1.0 |
19-Oct-2020
|
Versão inicial |