Provedores de sessão de logon único no Azure Active Directory B2C
No artigo Configurar o comportamento de sessão do Azure Active Directory B2C, descrevemos o gerenciamento de sessão para a política personalizada do Azure AD B2C. Esse artigo descreve como definir configurações adicionais para o comportamento de SSO (logon único) de qualquer perfil técnico individual na sua política personalizada.
Por exemplo, você configura sua política para SSO em todo o locatário, mas deseja sempre executar a etapa de autenticação multifator, independentemente de uma sessão de SSO ativa. Obtenha esse comportamento configurando o provedor de sessão do perfil técnico da autenticação multifator.
Você pode aplicar provedores de sessão a dois fluxos:
- Novo logon
- Quando o usuário faz logon pela primeira vez, não há nenhuma sessão. Todos os perfis técnicos que usam um provedor de sessão se tornam participantes da sessão.
- O provedor de sessão pode gravar declarações no cookie de sessão.
- Logons posteriores
- Quando o usuário tem uma sessão ativa, as declarações que fazem parte do cookie de sessão são lidas no recipiente de declaraçõ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 recipiente de declarações, indicando que esse perfil técnico foi executado nas condições de SSO.
- O perfil técnico pode ser ignorado.
Dependendo do provedor de gerenciamento de sessão escolhido para determinado perfil técnico, o comportamento da sessão pode ser ativo ou suprimido. A seguinte lista apresenta alguns dos muitos exemplos possíveis do uso de provedores de sessão:
- Impedir ou impor interrupções de interface do usuário durante os logons (SSO) posteriores.
- Lembrar-se do provedor de identidade escolhido durante os logons (SSO) posteriores.
- Reduzir o número de operações de leitura no diretório durante os logons (SSO) posteriores.
- Acompanhar as sessões do provedor de identidade social para executar o logoff do provedor de identidade.
- Acompanhar os aplicativos de terceira parte confiáveis para logoff único.
Provedores de sessão
Há cinco provedores de sessão disponíveis para gerenciar como um perfil técnico lida com a sessão de SSO. Você precisa escolher o provedor de sessão mais apropriado ao configurar seu perfil técnico.
A tabela a seguir mostra o provedor de sessão que deve ser usado, dependendo do tipo de perfil técnico que você deseja gerenciar. Alguns provedores de sessão permitem ler e gravar declarações no cookie de sessão.
Provedor de sessão | Tipos de perfil técnico aplicáveis | Finalidade | Gravar declarações | Ler declarações |
---|---|---|---|---|
DefaultSSOSessionProvider | Autodeclarado, Microsoft Entra ID, autenticação multifator do Microsoft Entra, transformação 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 | Acelera a página de seleção do provedor de identidade. Executando o logoff único. | Sim | Sim |
OAuthSSOSessionProvider | Emissor do token JWT | Gerencia a sessão entre a terceira parte confiável OAuth2 ou OpenID Connect e o Azure AD B2C. Executa o logoff único. | Não | Não |
SamlSSOSessionProvider | Emissor do token SAML | Gerencia a sessão entre a terceira parte confiável do SAML e o Azure AD B2C. Executa o logoff único. | Não | Não |
NoopSSOSessionProvider | Qualquer | Suprime qualquer perfil técnico de fazer parte da sessão. | Não | Não |
O diagrama a seguir mostra os tipos de sessões usados pelo Azure AD B2C.
Como referenciar um provedor de sessão
Para usar um provedor de sessão no seu perfil técnico:
Crie um perfil técnico de gerenciamento de sessão conforme apropriado. Observe que o pacote inicial do Azure AD B2C inclui os perfis técnicos de gerenciamento de sessão mais comuns. Você pode referenciar um perfil técnico de gerenciamento de sessão existente, se aplicável.
O snippet XML a seguir mostra o perfil técnico de gerenciamento de sessão
SM-AAD
do pacote inicial. O provedor de sessão é o tipo deDefaultSSOSessionProvider
.<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>
Referencie o perfil técnico de gerenciamento de sessão no seu perfil técnico. Ao fazer isso, você controla o comportamento desse perfil técnico durante os logons (SSO) posteriores.
Para referenciar um perfil técnico de gerenciamento de sessão no seu perfil técnico, adicione o elemento
UseTechnicalProfileForSessionManagement
. O exemplo a seguir mostra o uso do perfil técnico de gerenciamento de sessãoSM-AAD
. Altere oReferenceId
para a 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 referencia nenhum provedor de gerenciamento de sessão, o provedor de sessão DefaultSSOSessionProvider é aplicado, o que pode causar um comportamento inesperado.
Observação
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 as declarações de sessão
Os perfis técnicos de gerenciamento de sessão controlam as declarações que podem ser lidas, gravadas ou produzidas durante a execução da política personalizada.
No perfil técnico de gerenciamento de sessão, use os elementos PersistedClaims
e OutputClaims
para gerenciar as declarações.
- Declarações persistentes – Declarações que podem ser gravadas no cookie de sessão.
- Para que uma declaração seja gravada no cookie de sessão, ela precisa fazer parte do recipiente de declarações atual.
- Todas as declarações que são gravadas são retornadas automaticamente durante os logons (logon único) posteriores. Não é preciso especificar as declarações de saída.
- Declarações de saída – Declarações extras que podem ser produzidas no recipiente de declarações durante os logons (logon único) posteriores. Como as declarações de saída não são retornadas da sessão, é preciso definir um valor padrão.
Os elementos de declarações persistentes e de saída são demonstrados no seguinte snippet 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 provedores de gerenciamento de sessão DefaultSSOSessionProvider
e ExternalLoginSSOSessionProvider
podem ser configurados para gerenciar as declarações, por exemplo, durante:
- Novo logon
- O elemento
PersistedClaims
gravará as declarações no cookie de sessão. As declarações persistentes não podem ser gravadas novamente.
- O elemento
- Logons posteriores
- Cada declaração gravada no cookie de sessão será produzida no recipiente de declarações, disponível para ser usada na próxima etapa de orquestração.
- O elemento
OutputClaims
produzirá as declarações estáticas no recipiente de declarações. Use o atributoDefaultValue
para definir o valor da declaração de saída.
DefaultSSOSessionProvider
O provedor de sessão DefaultSSOSessionProvider
pode ser configurado para gerenciar as declarações durante os logons (logon único) posteriores e permitir que os perfis técnicos sejam ignorados. O DefaultSSOSessionProvider
deve ser usado para persistir e emitir as declarações necessárias para as etapas de orquestração posteriores que, de outro modo, não serão obtidas durante os logons (logon único) posteriores. Por exemplo, as declarações que podem ser obtidas da leitura do objeto de usuário no diretório.
O perfil técnico SM-AAD
a seguir é o tipo de provedor de sessão DefaultSSOSessionProvider
. O perfil técnico SM-AAD
pode ser encontrado no pacote inicial 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-AAD
perfil técnico de gerenciamento de sessão usa o provedor de sessão DefaultSSOSessionProvider
. Ele se comportará da seguinte maneira quando aplicado ao perfil técnico SelfAsserted-LocalAccountSignin-Email
por meio do pacote inicial da 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 comsignInName
para ser persistente, e o perfil técnico que referencia o SM-AAD contém umOutputClaim
parasignInName
. Esse comportamento é aplicável a todas as declarações que atendem a esse padrão.
- Logons posteriores
- O perfil técnico é ignorado, e o usuário não verá a página de entrada.
- O recipiente de declarações conterá o valor
signInName
do cookie de sessão, que foi persistido na entrada nova e qualquer outra declaração que atendeu ao padrão a ser persistido no cookie de sessão. - O perfil técnico de gerenciamento de sessão retorna a declaração
objectIdFromSession
porque as declaraçõesOutput
do provedor de sessão são processadas durante os logons (logon único) posteriores. Nesse caso, a declaraçãoobjectIdFromSession
que está presente no recipiente de declarações indica que as declarações do usuário são provenientes do cookie de sessão devido ao logon único.
ExternalLoginSSOSessionProvider
O provedor de sessão ExternalLoginSSOSessionProvider
é usado para ignorar a tela "Seleção de provedor de identidade" e sair de um provedor de identidade federada. Normalmente, ele é referenciado em um perfil técnico configurado para um provedor de identidade federada, como o Facebook ou o Microsoft Entra ID.
- Novo logon
- O elemento
PersistedClaims
gravará as declarações no cookie de sessão. As declarações persistentes não podem ser gravadas novamente.
- O elemento
- Logons posteriores
- Cada declaração gravada no cookie de sessão será produzida no recipiente de declarações, disponível para ser usada na próxima etapa de orquestração.
- O elemento
OutputClaims
produzirá as declarações estáticas no recipiente de declarações. Use o atributoDefaultValue
que definiu o valor da declaração. - Quando um perfil técnico, que referencia um perfil técnico de gerenciamento de sessão, contiver um
OutputClaim
, que foi persistido no cookie de sessão, esse perfil técnico será ignorado.
O perfil técnico SM-SocialLogin
a seguir é o tipo de provedor de sessão ExternalLoginSSOSessionProvider
. O perfil técnico SM-SocialLogin
pode ser encontrado no pacote inicial 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 declaração AlternativeSecurityId
é gerada quando um usuário se conecta com um provedor de identidade externo. Representando o identificador exclusivo do usuário do provedor de identidade externo. A declaração AlternativeSecurityId
é persistida de modo que, em percursos de logon único, o perfil do usuário possa ser lido no diretório sem nenhuma interação com o provedor de identidade federada.
Para configurar o provedor de sessão externo, adicione uma referência ao SM-SocialLogin
por meio dos seus perfis técnicos do OAuth1, do OAuth2 ou do OpenID Connect. Por exemplo, o Facebook-OAUTH
usa o perfil técnico de gerenciamento de sessão SM-SocialLogin
. Para saber mais, confira o pacote inicial da política personalizada.
<TechnicalProfile Id="Facebook-OAUTH">
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>
OAuthSSOSessionProvider
O provedor de sessão OAuthSSOSessionProvider
é usado para gerenciar as sessões do Azure AD B2C entre uma terceira parte confiável do OAuth2 ou do OpenID Connect e o Azure AD B2C. O Azure AD B2C dá suporte ao SLO, também conhecido como logoff único. Quando um usuário sair do serviço por meio do ponto de extremidade de saída do Azure AD B2C, Azure AD B2C limpará o cookie de sessão do usuário do navegador. No entanto, o usuário pode ainda entrar em outros aplicativos que usam o Azure AD B2C para autenticação.
Esse tipo de provedor de sessão permite que o Azure AD B2C acompanhe todos os aplicativos OAuth2 ou OpenID Connect em que o usuário está conectado. Durante a saída de um aplicativo, o Azure AD B2C tentará chamar os pontos de extremidade logout
de todos os outros aplicativos conectados conhecidos. Essa funcionalidade é integrada ao provedor de sessão. Não há declarações persistentes ou de saída disponíveis para serem configuradas. O perfil técnico SM-jwt-issuer
a seguir é o tipo de provedor de sessão OAuthSSOSessionProvider
.
<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 perfil técnico SM-jwt-issuer
é referenciado no perfil técnico JwtIssuer
:
<TechnicalProfile Id="JwtIssuer">
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
</TechnicalProfile>
SamlSSOSessionProvider
O provedor de sessão SamlSSOSessionProvider
é usado para gerenciar o comportamento da sessão com provedores de identidade SAML federada ou aplicativos de terceira parte confiável e o Azure AD B2C.
Gerenciamento de sessão do provedor de identidade SAML
Quando você referencia um provedor de sessão SamlSSOSessionProvider
em uma sessão do provedor de identidade SAML, o RegisterServiceProviders
precisa ser definido como false
.
O seguinte perfil técnico SM-Saml-idp
é o tipo de provedor de sessão SamlSSOSessionProvider
:
<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 perfil técnico de gerenciamento de sessão SM-Saml-idp
, adicione uma referência ao perfil técnico do provedor de identidade SAML. Por exemplo, o provedor Contoso-SAML2
de identidade SAML do AD-FS 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
Quando você referencia um provedor de sessão SamlSSOSessionProvider
para gerenciar uma sessão de uma terceira parte confiável SAML, o RegisterServiceProviders
precisa ser definido como true
. O logoff da sessão SAML exige que SessionIndex
e NameID
sejam concluídos.
O seguinte perfil técnico SM-Saml-issuer
é o tipo de provedor de sessão SamlSSOSessionProvider
:
<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 perfil técnico de gerenciamento de sessão SM-Saml-issuer
, adicione uma referência ao perfil técnico do emissor do token SAML. Por exemplo, o perfil técnico Saml2AssertionIssuer
usa o perfil técnico de gerenciamento de sessão SM-Saml-issuer
.
<TechnicalProfile Id="Saml2AssertionIssuer">
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer" />
</TechnicalProfile>
Metadados
Atributo | Obrigatório | Descrição |
---|---|---|
IncludeSessionIndex | Não | Não usado no momento, pode ser ignorado. |
RegisterServiceProviders | Não | Indica que o provedor deve registrar todos os provedores de serviço SAML que emitiram uma declaração. Valores possíveis: true (padrão) ou false . |
NoopSSOSessionProvider
O provedor de sessão NoopSSOSessionProvider
é usado para suprimir o comportamento de logon único. Os perfis técnicos que usam esse tipo de provedor de sessão sempre serão processados, mesmo quando o usuário tiver uma sessão ativa. Esse tipo de provedor de sessão pode ser útil para forçar perfis técnicos específicos a serem sempre executados, por exemplo:
- Transformação de declarações – Para criar ou transformar declarações que serão usadas posteriormente para determinar as etapas de orquestração a serem processadas ou ignoradas.
- RESTful – Busque dados atualizados de um serviço RESTful sempre que a política for executada. Você também pode chamar um RESTful para log estendido e auditoria.
- Autodeclarado – Force o usuário a fornecer dados sempre que a política for executada. Por exemplo, confirme os emails com a senha de uso único ou peça o consentimento do usuário.
- Phonefactor – Force o usuário a executar a autenticação multifator como parte de uma "autenticação de step-up", mesmo durante os logons (logon único) posteriores.
Esse tipo de provedor de sessão não persiste as declarações no cookie de sessão do usuário. O perfil técnico SM-Noop
a seguir é o tipo de provedor de sessão NoopSSOSessionProvider
. O perfil técnico SM-Noop
pode ser encontrado no pacote inicial 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 logon único de um perfil técnico, adicione uma referência ao perfil técnico SM-Noop
. Por exemplo, o AAD-Common
usa o perfil técnico de gerenciamento de sessão SM-Noop
. Para saber mais, confira o pacote inicial da política personalizada.
<TechnicalProfile Id="AAD-Common">
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
Próximas etapas
Saiba como configurar o comportamento de sessão.