Partilhar via


Provedores de sessão de logon único no Azure Ative Directory B2C

No artigo Configurar comportamento de sessão no Azure Ative Directory B2C , descrevemos o gerenciamento de sessão para sua política personalizada do Azure AD B2C. Este artigo descreve como configurar ainda mais o comportamento de logon único (SSO) de qualquer perfil técnico individual dentro de sua política personalizada.

Por exemplo, você configura sua política para SSO em todo o locatário, mas gostaria de sempre executar a etapa multifator, independentemente de uma sessão de SSO ativa. Você pode obter esse comportamento configurando o provedor de sessão do perfil técnico multifator.

Você pode aplicar provedores de sessão a dois fluxos:

  • Novo logon
    • Quando o usuário faz login pela primeira vez, não há sessão. Qualquer perfil técnico que use um provedor de sessão se torna um participante da sessão.
    • O provedor de sessão pode gravar declarações no cookie de sessão.
  • Logons subsequentes
    • Quando o utilizador tem uma sessão ativa, as declarações que fazem parte do cookie de sessão são lidas no saco de reclamações.
    • As declarações que fazem parte do cookie de sessão não podem ser atualizadas.
    • O provedor de sessão pode emitir declarações extras no saco de reivindicações, indicando que esse perfil técnico foi executado sob condições de SSO.
    • O perfil técnico pode ser ignorado.

Dependendo do provedor de gerenciamento de sessão escolhido para um determinado perfil técnico, o comportamento da sessão pode ser ativo ou suprimido. A lista a seguir apresenta alguns dos muitos exemplos possíveis usando provedores de sessão:

  • Impeça ou imponha interrupções na interface do usuário durante logons (SSO) subsequentes.
  • Lembre-se do provedor de identidade escolhido durante logons (SSO) subsequentes.
  • Reduza o número de operações de leitura no diretório durante logons subsequentes (SSO).
  • Acompanhe as sessões do provedor de identidade social para executar a saída do provedor de identidade.
  • Rastreie aplicativos de terceira parte confiável conectados para saída única.

Provedores de sessão

Há cinco provedores de sessão disponíveis para gerenciar como um perfil técnico lida com a sessão SSO. Você deve escolher o provedor de sessão mais apropriado ao configurar seu perfil técnico.

A tabela a seguir mostra qual provedor de sessão usar, dependendo do tipo de perfil técnico que você deseja gerenciar. Alguns provedores de sessão permitem a leitura e gravação de declarações para o cookie de sessão.

Provedor de sessão Tipos de perfis técnicos aplicáveis Propósito Escrever declarações Ler reclamações
DefaultSSOSessionProvider Autoafirmado, Microsoft Entra ID, Microsoft Entra autenticação multifator, Transformação de declarações Ignora a execução do perfil técnico. Sim Sim
ExternalLoginSSOSessionProvider Provedor de identidade OAuth1, provedor de identidade OAuth2, provedor de identidade OpenID Connect, provedor de identidade SAML Acelere a página de seleção do provedor de identidade. Execução de logout único. Sim Sim
OAuthSSOSessionProvider Emissor de token JWT Gerencia a sessão entre a terceira parte confiável OAuth2 ou OpenId Connect e o Azure AD B2C. Executa o logout único. No Não
SamlSSOSessionProvider Emissor de token SAML Gerencia a sessão entre a terceira parte confiável SAML e o Azure AD B2C. Executa o logout único. No Não
NoopSSOSessionProvider Qualquer Suprima qualquer perfil técnico de fazer parte da sessão. No Não

O diagrama a seguir mostra os tipos de sessão usados pelo Azure AD B2C.

Diagrama mostrando os tipos de provedores de sessão do Azure AD B2C.

Fazendo referência a um provedor de sessão

Para usar um provedor de sessão em seu perfil técnico:

  1. Crie um perfil técnico de gerenciamento de sessão apropriado. Observe que o pacote inicial do Azure AD B2C inclui os perfis técnicos de gerenciamento de sessão mais comuns. Você pode fazer referência a um perfil técnico de gerenciamento de sessão existente, se aplicável.

    O trecho XML a seguir mostra o perfil técnico de gerenciamento de SM-AAD sessão do pacote inicial. A sessão fornecida é do DefaultSSOSessionProvidertipo .

    <TechnicalProfile Id="SM-AAD">
      <DisplayName>Session Mananagement Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <PersistedClaims>
        <PersistedClaim ClaimTypeReferenceId="objectId" />
        <PersistedClaim ClaimTypeReferenceId="signInName" />
        <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
        <PersistedClaim ClaimTypeReferenceId="identityProvider" />
        <PersistedClaim ClaimTypeReferenceId="newUser" />
        <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
      </PersistedClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true" />
      </OutputClaims>
    </TechnicalProfile>
    
  2. Consulte o perfil técnico de gerenciamento de sessão em seu perfil técnico. Ao fazer isso, você controla o comportamento desse perfil técnico durante logons subsequentes (SSO).

    Para fazer referência a um perfil técnico de gerenciamento de sessão do seu perfil técnico, adicione o UseTechnicalProfileForSessionManagement elemento . O exemplo a seguir mostra o uso do perfil técnico de gerenciamento de SM-AAD sessão. Altere o ReferenceId para o ID do seu perfil técnico de gerenciamento de sessão.

    <TechnicalProfile Id="{Technical-profile-ID}">
      ...
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
    </TechnicalProfile>
    

Importante

Quando um perfil técnico não faz referência a nenhum provedor de gerenciamento de sessão, o provedor de sessão DefaultSSOSessionProvider é aplicado, o que pode causar um comportamento inesperado.

Nota

Durante um fluxo de token de atualização, os provedores de gerenciamento de sessão não são invocados. Todas as tentativas de emitir um novo token de acesso são uma cópia das declarações originais emitidas.

Gerenciar declarações de sessão

Os perfis técnicos de gerenciamento de sessão controlam quais declarações podem ser lidas, gravadas ou saídas durante a execução da política personalizada.

Dentro do perfil técnico de gerenciamento de sessão, uso PersistedClaims e OutputClaims elementos para gerenciar as reivindicações.

  • Declarações persistentes - Declarações que podem ser gravadas no cookie de sessão.
    • Para que uma reivindicação seja gravada no cookie de sessão, ela deve fazer parte do pacote de reclamações atual.
    • Todas as declarações gravadas retornam automaticamente durante logons subsequentes (logon único). Não é necessário especificar as declarações de saída.
  • Declarações de saída - Declarações extras que podem ser enviadas para o pacote de declarações durante logons subsequentes (logon único). Como as declarações de saída não são retornadas da sessão, você deve definir um valor padrão.

Os elementos de declarações persistentes e de saída são demonstrados no seguinte trecho XML:

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

Os DefaultSSOSessionProvider provedores de gerenciamento de sessão e ExternalLoginSSOSessionProvider podem ser configurados para gerenciar declarações, de modo que durante:

  • Novo logon
    • O PersistedClaims elemento gravará declarações no cookie de sessão. As declarações persistentes não podem ser reescritas.
  • Logons subsequentes
    • Cada declaração gravada no cookie de sessão será enviada para o pacote de declarações, disponível para ser usada na próxima etapa de orquestração.
    • O OutputClaims elemento produzirá declarações estáticas no saco de reclamações. Use o DefaultValue atributo para definir o valor da declaração de saída.

DefaultSSOSessionProvider

O DefaultSSOSessionProvider provedor de sessão pode ser configurado para gerenciar declarações durante logons subsequentes (logon único) e permitir que perfis técnicos sejam ignorados. O DefaultSSOSessionProvider deve ser usado para persistir e emitir declarações que são necessárias para etapas de orquestração subsequentes que não serão obtidas de outra forma durante logons subsequentes (logon único). Por exemplo, declarações que podem ser obtidas a partir da leitura do objeto de usuário do diretório.

O perfil técnico a seguir SM-AAD é o tipo de provedor de DefaultSSOSessionProvider sessão. O SM-AAD perfil técnico pode ser encontrado no pacote inicial de política personalizada.

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="signInName" />
    <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
    <PersistedClaim ClaimTypeReferenceId="identityProvider" />
    <PersistedClaim ClaimTypeReferenceId="newUser" />
    <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

Por exemplo, o SM-AADperfil técnico de gerenciamento de sessão usa o provedor de DefaultSSOSessionProvider sessão. Ele se comportará da seguinte forma quando aplicado em relação ao SelfAsserted-LocalAccountSignin-Email perfil técnico do pacote inicial de política personalizada:

  • Novo logon
    • signInName será gravado no cookie de sessão, porque o perfil técnico de gerenciamento de sessão (SM-AAD) está configurado para signInName ser persistente e o perfil técnico que faz referência ao SM-AAD contém um OutputClaim para signInName. Esse comportamento é aplicável a todas as declarações que atendem a esse padrão.
  • Logons subsequentes
    • O perfil técnico é ignorado e o utilizador não verá a página de início de sessão.
    • O saco de declarações conterá o signInName valor do cookie de sessão, que foi persistido no novo início de sessão, e quaisquer outras declarações que atendam ao padrão a ser persistido no cookie de sessão.
    • O perfil técnico de gerenciamento de sessão retorna a objectIdFromSession declaração porque Output as declarações do provedor de sessão são processadas durante logons subsequentes (logon único). Neste caso, a objectIdFromSession reivindicação presente no saco de reclamações, indica que as reivindicações do usuário são provenientes do cookie de sessão devido ao logon único.

ExternalLoginSSOSessionProvider

O ExternalLoginSSOSessionProvider provedor de sessão é usado para ignorar a tela "seleção do provedor de identidade" e sair de um provedor de identidade federada. Normalmente é referenciado em um perfil técnico configurado para um provedor de identidade federada, como Facebook ou Microsoft Entra ID.

  • Novo logon
    • O PersistedClaims elemento gravará declarações no cookie de sessão. As declarações persistentes não podem ser reescritas.
  • Logons subsequentes
    • Cada declaração gravada no cookie de sessão será enviada para o pacote de reivindicações, disponível para ser usada na próxima etapa de orquestração.
    • O OutputClaims elemento produzirá declarações estáticas no saco de reclamações. Use o DefaultValue atributo the set the value of the claim.
    • Quando um perfil técnico, que faz referência a um perfil técnico de gerenciamento de sessão, contém um OutputClaimarquivo , que foi persistido no cookie de sessão, esse perfil técnico será ignorado.

O perfil técnico a seguir SM-SocialLogin é o tipo de provedor de ExternalLoginSSOSessionProvider sessão. O SM-SocialLogin perfil técnico pode ser encontrado no pacote inicial de política personalizada.

<TechnicalProfile Id="SM-SocialLogin">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.ExternalLoginSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="AlternativeSecurityId" />
  </PersistedClaims>
</TechnicalProfile>

A AlternativeSecurityId declaração é gerada quando um usuário entra com um provedor de identidade externo. Representando o identificador exclusivo do usuário do provedor de identidade externo. A AlternativeSecurityId declaração é mantida de tal forma que, no logon único em viagens, o perfil do usuário pode ser lido do diretório sem qualquer interação com o provedor de identidade federada.

Para configurar o provedor de sessão externo, adicione uma referência aos SM-SocialLogin perfis técnicos do OAuth1, OAuth2 ou OpenID Connect. Por exemplo, o Facebook-OAUTH usa o SM-SocialLogin perfil técnico de gerenciamento de sessão. Para obter mais informações, consulte o pacote inicial de política personalizada.

<TechnicalProfile Id="Facebook-OAUTH">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>

OAuthSSOSessionProvider

O OAuthSSOSessionProvider provedor de sessão é usado para gerenciar as sessões do Azure AD B2C entre a terceira parte confiável OAuth2 ou OpenId Connect e o Azure AD B2C. O Azure AD B2C dá suporte à Saída Única, também conhecida como Logon Único (SLO). Quando um usuário sai por meio do ponto de extremidade de saída do Azure AD B2C, o Azure AD B2C limpa o cookie de sessão do usuário do navegador. No entanto, o usuário ainda pode estar conectado a outros aplicativos que usam o Azure AD B2C para autenticação.

Esse tipo de provedor de sessão permite que o Azure AD B2C rastreie todos os aplicativos OAuth2 ou OpenId Connect nos quais o usuário fez logon. Durante a saída de um aplicativo, o Azure AD B2C tentará chamar os logout pontos de extremidade de todos os outros aplicativos conectados conhecidos. Essa funcionalidade é incorporada ao provedor de sessão. Não há declarações persistentes ou de saída disponíveis para serem configuradas. O perfil técnico a seguir SM-jwt-issuer é o tipo de provedor de OAuthSSOSessionProvider sessão.

<TechnicalProfile Id="SM-jwt-issuer">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.OAuthSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>

O SM-jwt-issuer perfil técnico é referenciado a partir do JwtIssuer perfil técnico:

<TechnicalProfile Id="JwtIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
</TechnicalProfile>

SamlSSOSessionProvider

O SamlSSOSessionProvider provedor de sessão é usado para gerenciar o comportamento da sessão com provedores de identidade SAML federados ou aplicativos de terceira parte confiável SAML e Azure AD B2C.

Gerenciamento de sessão do provedor de identidade SAML

Quando você faz referência a um SamlSSOSessionProvider provedor de sessão a partir de uma sessão de provedor de identidade SAML, o RegisterServiceProviders deve ser definido como false.

O seguinte SM-Saml-idp perfil técnico é o tipo de provedor de SamlSSOSessionProvider sessão:

<TechnicalProfile Id="SM-Saml-idp">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="RegisterServiceProviders">false</Item>
  </Metadata>
</TechnicalProfile>

Para usar o SM-Saml-idp perfil técnico de gerenciamento de sessão, adicione uma referência ao seu perfil técnico do provedor de identidade SAML. Por exemplo, o provedor Contoso-SAML2 de identidade AD-FS SAML usa o SM-Saml-idp perfil técnico de gerenciamento de sessão.

<TechnicalProfile Id="Contoso-SAML2">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp" />
</TechnicalProfile>

Gerenciamento de sessão do provedor de serviços SAML

Ao fazer referência a um SamlSSOSessionProvider provedor de sessão para gerenciar uma sessão de terceira parte confiável SAML, o RegisterServiceProviders deve ser definido como true. A saída da sessão SAML requer o SessionIndex e NameID para concluir.

O seguinte SM-Saml-issuer perfil técnico é o tipo de provedor de SamlSSOSessionProvider sessão:

<TechnicalProfile Id="SM-Saml-issuer">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</TechnicalProfile>

Para usar o SM-Saml-issuer perfil técnico de gerenciamento de sessão, adicione uma referência ao seu perfil técnico do emissor do token SAML. Por exemplo, o Saml2AssertionIssuer perfil técnico usa o SM-Saml-issuer perfil técnico de gerenciamento de sessão.

<TechnicalProfile Id="Saml2AssertionIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer" />
</TechnicalProfile>

Metadados

Atributo Necessário Description
IncludeSessionIndex Não Não usado atualmente, pode ser ignorado.
RegisterServiceProviders Não Indica que o provedor deve registrar todos os provedores de serviços SAML que receberam uma declaração. Valores possíveis: true (padrão) ou false.

NoopSSOSessionProvider

O NoopSSOSessionProvider provedor de sessão é usado para suprimir o comportamento de logon único. Os perfis técnicos que utilizam este tipo de fornecedor de sessão serão sempre processados, mesmo quando o utilizador tem uma sessão ativa. Esse tipo de provedor de sessão pode ser útil para forçar perfis técnicos específicos a sempre serem executados, por exemplo:

  • Transformação de declarações - Para criar ou transformar declarações que são usadas posteriormente para determinar quais etapas de orquestração processar ou ignorar.
  • RESTful - Buscar dados atualizados de um serviço RESTful sempre que a política for executada. Você também pode chamar um RESTful para registro em log estendido e auditoria.
  • Autoafirmação - Força o usuário a fornecer dados sempre que a política for executada. Por exemplo, verifique os e-mails com senha única ou peça o consentimento do usuário.
  • Phonefactor - Força o usuário a executar a autenticação multifator como parte de uma "autenticação step-up", mesmo durante logons subsequentes (logon único).

Esse tipo de provedor de sessão não persiste as declarações para o cookie de sessão do usuário. O perfil técnico a seguir SM-Noop é o tipo de provedor de NoopSSOSessionProvider sessão. O SM-Noop perfil técnico pode ser encontrado no pacote inicial de política personalizada.

<TechnicalProfile Id="SM-Noop">
  <DisplayName>Noop Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.NoopSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>

Para suprimir o comportamento de logon único de um perfil técnico, adicione uma referência ao SM-Noop perfil técnico. Por exemplo, o AAD-Common usa o SM-Noop perfil técnico de gerenciamento de sessão. Para obter mais informações, consulte o pacote inicial de política personalizada.

<TechnicalProfile Id="AAD-Common">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Próximos passos

Saiba como configurar o comportamento da sessão.