Fornecedores de sessão de início de sessão único no Azure Active Directory B2C

No artigo Configurar comportamento da sessão no Azure Active Directory B2C, descrevemos a gestão de sessões da sua política personalizada Azure AD B2C. Este artigo descreve como configurar ainda mais o comportamento de início de sessão único (SSO) de qualquer perfil técnico individual na sua política personalizada.

Por exemplo, pode configurar a sua política para o SSO ao nível do inquilino, mas gostaria de executar sempre o passo multifator, independentemente de uma sessão SSO ativa. Pode obter este comportamento ao configurar o fornecedor de sessão do perfil técnico multifator.

Pode aplicar fornecedores de sessão a dois fluxos:

  • Início de sessão fresco
    • Quando o utilizador inicia sessão pela primeira vez, não há sessão. Todos os perfis técnicos que utilizem um fornecedor de sessão tornam-se participantes da sessão.
    • O fornecedor de sessões pode escrever afirmações no cookie de sessão.
  • Inícios de sessão subsequentes
    • Quando o utilizador tem uma sessão ativa, as afirmações que fazem parte do cookie de sessão são lidas no saco de afirmações.
    • As afirmações que fazem parte do cookie de sessão não podem ser atualizadas.
    • O fornecedor de sessão pode emitir afirmações adicionais no saco de afirmações, indicando que este perfil técnico foi executado em condições de SSO.
    • O perfil técnico pode ser ignorado.

Dependendo do fornecedor de gestão de sessões escolhido para um determinado perfil técnico, o comportamento da sessão pode ser ativo ou suprimido. A lista seguinte apresenta alguns dos muitos exemplos possíveis através de fornecedores de sessão:

  • Impedir ou impor interrupções da interface de utilizador durante os inícios de sessão subsequentes (SSO).
  • Lembre-se do fornecedor de identidade escolhido durante os inícios de sessão subsequentes (SSO).
  • Reduza o número de operações de leitura no diretório durante os inícios de sessão subsequentes (SSO).
  • Controle as sessões do fornecedor de identidade social para realizar o início de sessão do fornecedor de identidade.
  • Controlar o registo de aplicações de entidades confiadoras para o início de sessão único.

Fornecedores de sessões

Existem cinco fornecedores de sessões disponíveis para gerir a forma como um perfil técnico processa a sessão de SSO. Tem de escolher o fornecedor de sessão mais adequado ao configurar o seu perfil técnico.

A tabela seguinte mostra o fornecedor de sessões a utilizar consoante o tipo de perfil técnico que pretende gerir. Alguns fornecedores de sessões permitem ler e escrever afirmações no cookie de sessão.

Fornecedor de sessões Tipos de perfil técnico aplicáveis Objetivo Escrever afirmações Ler afirmações
DefaultSSOSessionProvider Auto-afirmação, ID de Microsoft Entra, autenticação multifator Microsoft Entra, Transformação de afirmações Ignora a execução de perfis técnicos. Yes Yes
ExternalLoginSSOSessionProvider Fornecedor de identidade OAuth1, fornecedor de identidade Oauth2, fornecedor de identidade openID Connect, fornecedor de identidade SAML Acelere a página de seleção do fornecedor de identidades. A executar a sessão de início de sessão único. Yes Yes
OAuthSSOSessionProvider Emissor de tokens JWT Gere a sessão entre a entidade confiadora OAuth2 ou OpenId Connect e Azure AD B2C. Efetua a sessão de início de sessão único. No No
SamlSSOSessionProvider Emissor de tokens SAML Gere a sessão entre a entidade confiadora SAML e Azure AD B2C. Efetua a sessão de início de sessão único. No No
NoopSSOSessionProvider Qualquer Suprima qualquer perfil técnico de fazer parte da sessão. No No

O diagrama seguinte mostra os tipos de sessão utilizados pelo Azure AD B2C.

Diagrama a mostrar os Azure AD tipos de fornecedores de sessão B2C.

Referenciar um fornecedor de sessão

Para utilizar um fornecedor de sessão no seu perfil técnico:

  1. Crie um perfil técnico de gestão de sessões do adequado. Tenha em atenção que o Azure AD pacote de arranque B2C inclui os perfis técnicos de gestão de sessões mais comuns. Se aplicável, pode referenciar um perfil técnico de gestão de sessões existente.

    O fragmento XML seguinte mostra o perfil técnico de gestão de sessões do SM-AAD pacote de arranque. A sessão fornece o tipo de DefaultSSOSessionProvider.

    <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. Faça referência ao perfil técnico de gestão de sessões no seu perfil técnico. Ao fazê-lo, controla o comportamento desse perfil técnico durante os inícios de sessão subsequentes (SSO).

    Para referenciar um perfil técnico de gestão de sessões a partir do seu perfil técnico, adicione o UseTechnicalProfileForSessionManagement elemento. O exemplo seguinte mostra a utilização do perfil técnico de gestão de SM-AAD sessões. Altere o ReferenceId para o ID do perfil técnico de gestão de sessões.

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

Importante

Quando um perfil técnico não referencia nenhum fornecedor de gestão de sessões, é aplicado o fornecedor de sessão DefaultSSOSessionProvider , o que pode causar um comportamento inesperado.

Nota

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

Gerir afirmações de sessão

Os perfis técnicos de gestão de sessões controlam as afirmações que podem ser lidas, escritas ou saídas durante a execução de políticas personalizadas.

No perfil técnico de gestão de sessões, utilize PersistedClaims e OutputClaims elementos para gerir as afirmações.

  • Afirmações persistentes – afirmações que podem ser escritas no cookie de sessão.
    • Para que uma afirmação seja escrita no cookie de sessão, tem de fazer parte do saco de afirmações atual.
    • Todas as afirmações escritas devolvem automaticamente durante os inícios de sessão subsequentes (início de sessão único). Não precisa de especificar as afirmações de saída.
  • Afirmações de saída – afirmações adicionais que podem ser saídas para o saco de afirmações durante os inícios de sessão subsequentes (início de sessão único). Uma vez que as afirmações de saída não são devolvidas da sessão, tem de definir um valor predefinido.

Os elementos de afirmações persistentes e de saída são demonstrados no seguinte fragmento 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 fornecedores de gestão de sessões e ExternalLoginSSOSessionProvider podem ser configurados para gerir afirmações, de modo a que durante:

  • Início de sessão fresco
    • O PersistedClaims elemento irá escrever afirmações no cookie de sessão. As afirmações persistentes não podem ser reescritas.
  • Inícios de sessão subsequentes
    • Todas as afirmações escritas no cookie de sessão serão apresentadas no saco de afirmações, disponível para serem utilizadas no próximo passo de orquestração.
    • O OutputClaims elemento irá produzir afirmações estáticas no saco de afirmações. Utilize o DefaultValue atributo para definir o valor da afirmação de saída.

DefaultSSOSessionProvider

O DefaultSSOSessionProvider fornecedor de sessão pode ser configurado para gerir afirmações durante inícios de sessão subsequentes (início de sessão único) e permitir que os perfis técnicos sejam ignorados. O DefaultSSOSessionProvider deve ser utilizado para persistir e emitir afirmações que são necessárias pelos passos de orquestração subsequentes que, de outra forma, não serão obtidos durante inícios de sessão subsequentes (início de sessão único). Por exemplo, afirmações que podem ser obtidas a partir da leitura do objeto de utilizador a partir do diretório.

O seguinte SM-AAD perfil técnico é o tipo de fornecedor de DefaultSSOSessionProvider sessão. O SM-AAD perfil técnico pode ser encontrado no pacote de arranque da 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 gestão de sessões utiliza o fornecedor de DefaultSSOSessionProvider sessão. Irá comportar-se da seguinte forma quando aplicado ao SelfAsserted-LocalAccountSignin-Email perfil técnico do pacote de arranque da política personalizada:

  • Início de sessão fresco
    • signInName será escrito no cookie de sessão, porque o perfil técnico de gestão de sessões (SM-AAD) está configurado com signInName para ser persistente e o perfil técnico que referencia o SM-AAD contém um OutputClaim para signInName. Este comportamento é aplicável a todas as afirmações que cumprem este padrão.
  • Inícios de sessão subsequentes
    • O perfil técnico é ignorado e o utilizador não verá a página de início de sessão.
    • O saco de afirmações irá conter o signInName valor do cookie de sessão, que foi mantido no início de sessão fresco, e quaisquer outras afirmações que cumpriram o padrão para serem mantidas no cookie de sessão.
    • O perfil técnico de gestão de sessões devolve a objectIdFromSession afirmação porque Output as afirmações do fornecedor de sessão são processadas durante os inícios de sessão subsequentes (início de sessão único). Neste caso, a objectIdFromSession afirmação que está presente no saco de afirmações indica que as afirmações do utilizador são provenientes do cookie de sessão devido ao início de sessão único.

ExternalLoginSSOSessionProvider

O ExternalLoginSSOSessionProvider fornecedor de sessão é utilizado para ignorar o ecrã "seleção do fornecedor de identidade" e terminar sessão a partir de um fornecedor de identidade federado. Normalmente, é referenciado num perfil técnico configurado para um fornecedor de identidade federado, como o Facebook ou Microsoft Entra ID.

  • Início de sessão fresco
    • O PersistedClaims elemento irá escrever afirmações no cookie de sessão. As afirmações persistentes não podem ser reescritas.
  • Inícios de sessão subsequentes
    • Todas as afirmações escritas no cookie de sessão serão apresentadas no saco de afirmações, disponível para serem utilizadas no próximo passo de orquestração.
    • O OutputClaims elemento irá gerar afirmações estáticas no saco de afirmações. Utilize o DefaultValue atributo definir o valor da afirmação.
    • Quando um perfil técnico, que faz referência a um perfil técnico de gestão de sessões, contém um OutputClaim, que foi mantido no cookie de sessão, este perfil técnico será ignorado.

O seguinte SM-SocialLogin perfil técnico é o tipo de fornecedor de ExternalLoginSSOSessionProvider sessão. O SM-SocialLogin perfil técnico pode ser encontrado no pacote de arranque da 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 afirmação é gerada quando um utilizador inicia sessão com um fornecedor de identidade externo. Representa o identificador exclusivo do utilizador do fornecedor de identidade externo. A AlternativeSecurityId afirmação persiste para que, em percursos de início de sessão único, o perfil do utilizador possa ser lido a partir do diretório sem qualquer interação com o fornecedor de identidade federado.

Para configurar o fornecedor de sessão externa, adicione uma referência aos SM-SocialLogin perfis técnicos de OAuth1, OAuth2 ou OpenID Connect . Por exemplo, o Facebook-OAUTH utiliza o SM-SocialLogin perfil técnico de gestão de sessões. Para obter mais informações, veja o pacote de arranque da política personalizada.

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

OAuthSSOSessionProvider

O OAuthSSOSessionProvider fornecedor de sessão é utilizado para gerir as sessões Azure AD B2C entre a entidade confiadora OAuth2 ou OpenId Connect e Azure AD B2C. Azure AD B2C suporta o Fim de sessão único, também conhecido como Log-Out Único (SLO). Quando um utilizador termina sessão através do ponto final de fim de sessão Azure AD B2C, Azure AD B2C limpará o cookie de sessão do utilizador do browser. No entanto, o utilizador ainda pode ter sessão iniciada noutras aplicações que utilizam Azure AD B2C para autenticação.

Este tipo de fornecedor de sessão permite que Azure AD B2C controle todas as aplicações OAuth2 ou OpenId Connect em que o utilizador iniciou sessão. Durante o fim de sessão de uma aplicação, Azure AD B2C tentará chamar os logout pontos finais de todas as outras aplicações registadas conhecidas. Esta funcionalidade está incorporada no fornecedor de sessão. Não existem afirmações persistentes ou de saída disponíveis para configuração. O seguinte SM-jwt-issuer perfil técnico é o tipo de fornecedor 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 JwtIssuer partir do perfil técnico:

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

SamlSSOSessionProvider

O SamlSSOSessionProvider fornecedor de sessão é utilizado para gerir o comportamento da sessão com fornecedores de identidade SAML federados ou aplicações de entidade confiadora SAML e Azure AD B2C.

Gestão de sessões do fornecedor de identidade SAML

Quando referencia um SamlSSOSessionProvider fornecedor de sessão a partir de uma sessão de fornecedor de identidade SAML, o RegisterServiceProviders tem de ser definido como false.

O seguinte SM-Saml-idp perfil técnico é o tipo de fornecedor 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 utilizar o SM-Saml-idp perfil técnico de gestão de sessões, adicione uma referência ao perfil técnico do fornecedor de identidade SAML . Por exemplo, o fornecedor de identidade SAML do AD-FS utiliza o SM-Saml-idp perfil técnico de gestão de sessões.Contoso-SAML2

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

Gestão de sessões do fornecedor de serviços SAML

Ao referenciar um SamlSSOSessionProvider fornecedor de sessão para gerir uma sessão de entidade confiadora SAML, o RegisterServiceProviders tem de ser definido como true. O início de sessão saml requer o SessionIndex e NameID para concluir.

O seguinte SM-Saml-issuer perfil técnico é o tipo de fornecedor 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 utilizar o SM-Saml-issuer perfil técnico de gestão de sessões, adicione uma referência ao perfil técnico do emissor de tokens SAML . Por exemplo, o Saml2AssertionIssuer perfil técnico utiliza o SM-Saml-issuer perfil técnico de gestão de sessões.

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

Metadados

Atributo Necessário Descrição
IncludeSessionIndex No Não utilizado atualmente, pode ser ignorado.
RegisterServiceProviders No Indica que o fornecedor deve registar todos os fornecedores de serviços SAML que receberam uma asserção. Valores possíveis: true (predefinição) ou false.

NoopSSOSessionProvider

O NoopSSOSessionProvider fornecedor de sessão é utilizado para suprimir o comportamento de início de sessão único. Os perfis técnicos que utilizam este tipo de fornecedor de sessão serão sempre processados, mesmo quando o utilizador tiver uma sessão ativa. Este tipo de fornecedor de sessão pode ser útil para forçar a execução de perfis técnicos específicos, por exemplo:

  • Transformação de afirmações – para criar ou transformar afirmações que são mais tarde utilizadas para determinar que passos de orquestração processar ou ignorar.
  • Restful – obtenha dados atualizados de um serviço Restful sempre que a política for executada. Também pode chamar um Restful para registo alargado e auditoria.
  • Auto-afirmação – force o utilizador a fornecer dados sempre que a política for executada. Por exemplo, verifique os e-mails com código de acesso único ou peça o consentimento do utilizador.
  • Phonefactor – force o utilizador a efetuar a autenticação multifator como parte de uma "autenticação passo a passo" mesmo durante inícios de sessão subsequentes (início de sessão único).

Este tipo de fornecedor de sessão não persiste nas afirmações para o cookie de sessão do utilizador. O seguinte SM-Noop perfil técnico é o tipo de fornecedor de NoopSSOSessionProvider sessão. O SM-Noop perfil técnico pode ser encontrado no pacote de arranque da 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 início de sessão único de um perfil técnico, adicione uma referência ao SM-Noop perfil técnico. Por exemplo, o AAD-Common utiliza o SM-Noop perfil técnico de gestão de sessões. Para obter mais informações, veja o pacote de arranque da política personalizada.

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

Passos seguintes

Saiba como configurar o comportamento da sessão.