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.
Fazendo referência a um provedor de sessão
Para usar um provedor de sessão em seu perfil técnico:
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 é doDefaultSSOSessionProvider
tipo .<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>
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 deSM-AAD
sessão. Altere oReferenceId
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.
- O
- 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 oDefaultValue
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-AAD
perfil 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 parasignInName
ser persistente e o perfil técnico que faz referência ao SM-AAD contém umOutputClaim
parasignInName
. 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 porqueOutput
as declarações do provedor de sessão são processadas durante logons subsequentes (logon único). Neste caso, aobjectIdFromSession
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.
- O
- 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 oDefaultValue
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
OutputClaim
arquivo , 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.