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.

Screenshot of the Microsoft Entra Single Sign Out Workflow.

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 de ID 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 caracteres DateTime 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.