Protocolo SAML de Logout Único
O Microsoft Entra ID é compatível com o perfil de logout único do navegador da Web SAML 2.0. Para que o logout único funcione corretamente, o LogoutURL do aplicativo deve ser explicitamente registrado com o Microsoft Entra ID durante o registro do aplicativo.
Se o aplicativo for adicionado à Galeria de Azure App, esse valor poderá ser definido por padrão. Caso contrário, o valor deve ser determinado e definido pela pessoa que está adicionando o aplicativo ao seu locatário do Microsoft Entra. O Microsoft Entra ID usa o LogoutURL para redirecionar os usuários depois que eles saem. O Microsoft Entra ID dá suporte à associação de redirecionamento (HTTP GET), e não à associação de HTTP POST.
O diagrama a seguir mostra o fluxo de trabalho do processo de logout único do Microsoft Entra.
LogoutRequest
O serviço de nuvem envia uma mensagem LogoutRequest
ao Microsoft Entra ID para indicar que uma sessão foi encerrada. O trecho a seguir mostra um exemplo de elemento LogoutRequest
.
<samlp:LogoutRequest xmlns="urn:oasis:names:tc:SAML:2.0:metadata" ID="idaa6ebe6839094fe4abc4ebd5281ec780" Version="2.0" IssueInstant="2013-03-28T07:10:49.6004822Z" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.workaad.com</Issuer>
<NameID xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> Uz2Pqz1X7pxe4XLWxV9KJQ+n59d573SepSAkuYKSde8=</NameID>
</samlp:LogoutRequest>
O elemento LogoutRequest
enviado ao Microsoft Entra ID requer os seguintes atributos:
ID
- isso identifica a solicitação de saída. O valor deID
não deve começar com um número. A prática comum é acrescentar id à representação de cadeia de caracteres de um GUID.Version
- Defina o valor desse elemento como 2.0. Esse valor é necessário.IssueInstant
- esta é uma cadeia de caracteresDateTime
com um valor de UTC (Tempo Universal Coordenado) e formato de ida e volta ("o"). O Microsoft Entra ID espera um valor desse tipo, mas não é obrigatório.
De acordo com a seção 3.7 da Especificação principal do SAML 2.0, pode haver vários participantes (outros aplicativos) em uma sessão além do aplicativo. Se um dos outros participantes enviar um LogoutRequest
para a plataforma de identidade da Microsoft (a autoridade de sessão), ela enviará um LogoutRequest
de volta a todos os participantes da sessão, exceto ao participante que enviou o LogoutRequest
inicial. Se outro participante iniciasse simultaneamente a saída, haveria uma corrida para ver qual LogoutRequest
chega primeiro à plataforma de identidade da Microsoft. Portanto, um aplicativo deve estar sempre preparado para processar um LogoutRequest
.
Emissor
O elemento Issuer
em uma LogoutRequest
deve corresponder exatamente a um dos ServicePrincipalNames no serviço de nuvem no Microsoft Entra ID. Normalmente, isso é definido como o URI da ID do aplicativo que é especificado durante o registro do aplicativo.
NameID
O valor do elemento NameID
deve corresponder exatamente ao NameID
do usuário que está sendo desconectado.
Observação
Durante a solicitação de saída do SAML, o valor NameID
não é considerado pelo Microsoft Entra ID.
Se uma única sessão de usuário estiver ativa, o Microsoft Entra ID selecionará automaticamente essa sessão e a saída do SAML prosseguirá.
Se várias sessões de usuário estiverem ativas, o Microsoft Entra ID enumerará as sessões ativas para a seleção do usuário. Após a seleção do usuário, o logoff do SAML continuará.
LogoutResponse
O Microsoft Entra ID envia uma LogoutResponse
em resposta a um elemento LogoutRequest
. O trecho a seguir mostra um exemplo de LogoutResponse
.
<samlp:LogoutResponse ID="_f0961a83-d071-4be5-a18c-9ae7b22987a4" Version="2.0" IssueInstant="2013-03-18T08:49:24.405Z" InResponseTo="iddce91f96e56747b5ace6d2e2aa9d4f8c" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
</samlp:Status>
</samlp:LogoutResponse>
O Microsoft Entra ID define os valores ID
, Version
eIssueInstant
no elemento LogoutResponse
. Ele também define o elemento InResponseTo
como o valor do atributo ID
da LogoutRequest
que emitiu a resposta.
Emissor
O Microsoft Entra ID define esse valor como https://login.microsoftonline.com/<TenantIdGUID>/
em que <TenantIdGUID> é a ID do locatário do Microsoft Entra.
Para identificar corretamente o elemento emissor, use o valor https://login.microsoftonline.com/<TenantIdGUID>/
conforme mostrado no exemplo de LogoutResponse. Esse formato de URL identifica o locatário do Microsoft Entra ID como o emissor, representando a autoridade responsável pela emissão da resposta.
Status
O Microsoft Entra ID usa o elemento StatusCode
no elemento Status
para indicar o êxito ou a falha de logout. Quando a tentativa de logout falha, o elemento StatusCode
também pode conter mensagens de erro personalizadas.