Sobre resolvedores de declarações nas políticas personalizadas do Azure Ative Directory B2C

Os resolvedores de declarações nas políticas personalizadas do Azure Ative Directory B2C (Azure AD B2C) fornecem informações de contexto sobre uma solicitação de autorização, como o nome da política, a ID de correlação da solicitação, o idioma da interface do usuário e muito mais.

Para usar um resolvedor de declarações em uma declaração de entrada ou saída, defina uma cadeia de caracteres ClaimType, sob o elemento ClaimsSchema e, em seguida, defina o DefaultValue como o resolvedor de declarações no elemento de declaração de entrada ou saída. O Azure AD B2C lê o valor do resolvedor de declarações e usa o valor no perfil técnico.

No exemplo a seguir, um tipo de declaração nomeado correlationId é definido com um DataType de string.

<ClaimType Id="correlationId">
  <DisplayName>correlationId</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Request correlation Id</UserHelpText>
</ClaimType>

No perfil técnico, mapeie o resolvedor de sinistros para o tipo de declaração. O Azure AD B2C preenche o valor do resolvedor {Context:CorrelationId} de declarações na declaração e envia a declaração correlationId para o perfil técnico.

<InputClaim ClaimTypeReferenceId="correlationId" DefaultValue="{Context:CorrelationId}" />

Cultura

A tabela a seguir lista os resolvedores de declaração com informações sobre o idioma usado na solicitação de autorização:

Afirmação Description Exemplo
{Cultura:LanguageName} O código ISO de duas letras para o idioma. in
{Cultura:LCID} O LCID do código da linguagem. 1033
{Cultura:RegionName} O código ISO de duas letras para a região. E.U.A.
{Cultura:RFC5646} O código de idioma RFC5646. en-US

Confira a demonstração ao vivo dos resolvedores de reivindicações de cultura.

Política

A tabela a seguir lista os resolvedores de declaração com informações sobre a política usada na solicitação de autorização:

Afirmação Description Exemplo
{Política:PolicyId} O nome da política da terceira parte confiável. B2C_1A_signup_signin
{Política:RelyingPartyTenantId} A ID do locatário da política de terceira parte confiável. your-tenant.onmicrosoft.com
{Política:TenantObjectId} A ID do objeto locatário da política de terceira parte confiável. 00000000-0000-0000-0000-000000000000
{Política:TrustFrameworkTenantId} A ID do locatário da estrutura de confiança. your-tenant.onmicrosoft.com

Confira a demonstração ao vivo dos resolvedores de reivindicações de política.

Contexto

A tabela a seguir lista os resolvedores de declaração contextuais da solicitação de autorização:

Afirmação Description Exemplo
{Contexto:BuildNumber} A versão do Identity Experience Framework (número de compilação). 1.0.507.0
{Contexto:CorrelationId} O ID de correlação. 00000000-0000-0000-0000-000000000000
{Contexto:DateTimeInUtc} A hora da data em UTC. 10/10/2021 12:00:00
{Contexto:DeploymentMode} O modo de implantação de política. Produção
{Contexto:HostName} O nome do host da solicitação atual. contoso.b2clogin.com
{Contexto:IPAddress} O endereço IP do usuário. 11.111.111.11
{Contexto:KMSI} Indica se a caixa de seleção Manter-me conectado está marcada. verdadeiro

Confira a demonstração ao vivo dos resolvedores de declaração de contexto.

Pedidos

Esta seção descreve como obter um valor de declaração como um resolvedor de reivindicações.

Afirmação Description Exemplo
{Reivindicação:tipo de reivindicação} Um identificador de um tipo de declaração já definido na seção ClaimsSchema no arquivo de política ou arquivo de política pai. Por exemplo: {Claim:displayName}, ou {Claim:objectId}. Um valor de tipo de declaração.

OpenID Connect

A tabela a seguir lista os resolvedores de declarações com informações sobre a solicitação de autorização do OpenID Connect:

Afirmação Description Exemplo
{OIDC:AuthenticationContextReferences} O acr_values parâmetro de cadeia de caracteres de consulta. N/A
{OIDC:ClientId} O client_id parâmetro de cadeia de caracteres de consulta. 00000000-0000-0000-0000-000000000000
{OIDC:DomainHint} O domain_hint parâmetro de cadeia de caracteres de consulta. facebook.com
{OIDC:LoginHint} O login_hint parâmetro de cadeia de caracteres de consulta. someone@contoso.com
{OIDC:MaxAge} O max_age. N/A
{OIDC:Nonce} O Nonce parâmetro de cadeia de caracteres de consulta. defaultNonce
{OIDC:Senha} As credenciais da senha do proprietário do recurso fluem a senha do usuário. palavra-passe1
{OIDC:Prompt} O prompt parâmetro de cadeia de caracteres de consulta. início de sessão
{OIDC:RedirectUri} O redirect_uri parâmetro de cadeia de caracteres de consulta. https://jwt.ms
{OIDC:Recurso} O resource parâmetro de cadeia de caracteres de consulta. N/A
{OIDC:Escopo} O scope parâmetro de cadeia de caracteres de consulta. OpenID
{OIDC:Nome de usuário} As credenciais de senha do proprietário do recurso fluem o nome de usuário do usuário. emily@contoso.com
{OIDC:IdToken} O id token parâmetro de cadeia de caracteres de consulta. N/A

Confira a demonstração ao vivo dos resolvedores de reivindicações do OpenID Connect.

Parâmetros chave-valor OAuth2

Qualquer nome de parâmetro incluído como parte de uma solicitação OIDC ou OAuth2 pode ser mapeado para uma declaração na jornada do usuário. Por exemplo, a solicitação do aplicativo pode incluir um parâmetro de cadeia de caracteres de consulta com um nome de , loyalty_numberou qualquer cadeia de caracteres de app_sessionconsulta personalizada.

Afirmação Description Exemplo
{OAUTH-KV:campaignId} Um parâmetro de cadeia de caracteres de consulta. Havai
{OAUTH-KV:app_session} Um parâmetro de cadeia de caracteres de consulta. A3C5R
{OAUTH-KV:loyalty_number} Um parâmetro de cadeia de caracteres de consulta. 1234
{OAUTH-KV:qualquer cadeia de caracteres de consulta personalizada} Um parâmetro de cadeia de caracteres de consulta. N/A

Parâmetros chave-valor SAML

Em uma solicitação de autenticação SAML, qualquer nome de parâmetro incluído na solicitação, mas que não seja específico do protocolo (como SAMLRequest) pode ser mapeado para uma declaração na jornada do usuário. Por exemplo, a solicitação pode incluir um parâmetro personalizado, como username. Isso se aplica a solicitações SAML iniciadas por SP e iniciadas por IDP.

Afirmação Description Exemplo
{SAML-KV:nome de utilizador} Uma cadeia de caracteres de consulta ou parâmetro de corpo POST. username@domain.com
{SAML-KV:loyalty_number} Uma cadeia de caracteres de consulta ou parâmetro de corpo POST. 1234
{SAML-KV:qualquer cadeia de caracteres de consulta personalizada} Uma cadeia de caracteres de consulta ou parâmetro de corpo POST. N/A

SAML

A tabela a seguir lista os resolvedores de declaração com informações sobre a solicitação de autorização SAML:

Afirmação Description Exemplo
{SAML:AuthnContextClassReferences} O AuthnContextClassRef valor do elemento, da solicitação SAML. urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
{SAML:NameIdPolicyFormat} O Format atributo, do NameIDPolicy elemento da solicitação SAML. urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
{SAML:Emissor} O valor do elemento SAML da solicitação SAML Issuer . https://contoso.com
{SAML:AllowCreate} O AllowCreate valor do atributo, do NameIDPolicy elemento da solicitação SAML. True
{SAML:ForceAuthn} O ForceAuthN valor do atributo, do AuthnRequest elemento da solicitação SAML. True
{SAML:ProviderName} O ProviderName valor do atributo, do AuthnRequest elemento da solicitação SAML. Contoso.com
{SAML:RelayState} O RelayState parâmetro de cadeia de caracteres de consulta.
{SAML:Assunto} O Subject do elemento NameId da solicitação SAML AuthN.
{SAML:Vinculação} O ProtocolBinding valor do atributo, do AuthnRequest elemento da solicitação SAML. urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST

Confira a demonstração ao vivo dos resolvedores de sinistros SAML.

Provedor de identidade OAuth2

A tabela a seguir lista os resolvedores de declarações do provedor de identidade OAuth2:

Afirmação Description Exemplo
{oauth2:access_token} O token de acesso do provedor de identidade OAuth2. O access_token atributo. eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...
{oauth2:token_type} O tipo do token de acesso. O token_type atributo. Portador
{OAuth2:expires_in} O período de tempo em que o token de acesso é válido em segundos. O expires_in atributo. A declaração de saída DataType deve ser int ou long. 960000
{OAuth2:refresh_token} O token de atualização do provedor de identidade OAuth2. O refresh_token atributo. eyJraWQiOiJacW9pQlp2TW5pYVc2MUY...

Para usar os resolvedores de declarações do provedor de identidade OAuth2, defina o atributo da declaração de saída como o resolvedor de PartnerClaimType declarações. O exemplo a seguir demonstra como o get the external identity provider declara:

<ClaimsProvider>
  <DisplayName>Contoso</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Contoso-OAUTH">
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
        <OutputClaim ClaimTypeReferenceId="identityProviderAccessTokenType" PartnerClaimType="{oauth2:token_type}" />
        <OutputClaim ClaimTypeReferenceId="identityProviderAccessTokenExpiresIn" PartnerClaimType="{oauth2:expires_in}" />
        <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
      </OutputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Usando resolvedores de sinistros

Você pode usar resolvedores de declarações com os seguintes elementos:

Item Elemento Definições
Perfil técnico do Application Insights InputClaim
Perfil técnico do Microsoft Entra InputClaim, OutputClaim 1, 2
Perfil técnico OAuth2 InputClaim, OutputClaim 1, 2
Perfil técnico do OpenID Connect InputClaim, OutputClaim 1, 2
Perfil técnico de transformação de sinistros InputClaim, OutputClaim 1, 2
Perfil técnico do provedor RESTful InputClaim 1, 2
Perfil técnico do provedor de identidade SAML OutputClaim 1, 2
Perfil técnico autoafirmado InputClaim, OutputClaim 1, 2
ContentDefinition LoadUri
ContentDefinitionParameters Parameter
Perfil técnico RelyingParty OutputClaim 2

Configurações:

  1. Os IncludeClaimResolvingInClaimsHandling metadados devem ser definidos como true.
  2. O atributo AlwaysUseDefaultValue de declarações de entrada ou saída deve ser definido como true.

Amostras de resolvedores de sinistros

Perfil técnico RESTful

Em um perfil técnico RESTful , convém enviar o idioma do usuário, o nome da política, o escopo e a ID do cliente. Com base nas declarações, a API REST pode executar uma lógica de negócios personalizada e, se necessário, gerar uma mensagem de erro localizada.

O exemplo a seguir mostra um perfil técnico RESTful com esse cenário:

<TechnicalProfile Id="REST">
  <DisplayName>Validate user input data and return loyaltyNumber claim</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ServiceUrl">https://your-app.azurewebsites.net/api/identity</Item>
    <Item Key="AuthenticationType">None</Item>
    <Item Key="SendClaimsIn">Body</Item>
    <Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userLanguage" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="policyName" DefaultValue="{Policy:PolicyId}" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="scope" DefaultValue="{OIDC:Scope}" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="clientId" DefaultValue="{OIDC:ClientId}" AlwaysUseDefaultValue="true" />
  </InputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Início de sessão direto

Usando resolvedores de declarações, você pode preencher previamente o nome de entrada ou o login direto em um provedor de identidade social específico, como Facebook, LinkedIn ou uma conta da Microsoft. Para obter mais informações, consulte Configurar o logon direto usando o Azure Ative Directory B2C.

Personalização dinâmica da interface do usuário

O Azure AD B2C permite que você passe parâmetros de cadeia de caracteres de consulta para seus pontos de extremidade de definição de conteúdo HTML para renderizar dinamicamente o conteúdo da página. Por exemplo, esse recurso permite a capacidade de modificar a imagem de plano de fundo na página de inscrição ou entrada do Azure AD B2C com base em um parâmetro personalizado que você passa de seu aplicativo Web ou móvel. Para obter mais informações, consulte Configurar dinamicamente a interface do usuário usando políticas personalizadas no Azure Ative Directory B2C. Você também pode localizar sua página HTML com base em um parâmetro de idioma ou pode alterar o conteúdo com base na ID do cliente.

O exemplo a seguir passa o parâmetro de cadeia de caracteres de consulta chamado campaignId com um valor de , um código de idioma de en-US, e aplicativo que representa a ID do Hawaiicliente:

<UserJourneyBehaviors>
  <ContentDefinitionParameters>
    <Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
    <Parameter Name="language">{Culture:RFC5646}</Parameter>
    <Parameter Name="app">{OIDC:ClientId}</Parameter>
  </ContentDefinitionParameters>
</UserJourneyBehaviors>

Como resultado, o Azure AD B2C envia os parâmetros acima para a página de conteúdo HTML:

/selfAsserted.aspx?campaignId=hawaii&language=en-US&app=0239a9cc-309c-4d41-87f1-31288feb2e82

Definição de conteúdo

Em um ContentDefinitionLoadUri, você pode enviar resolvedores de declarações para extrair conteúdo de locais diferentes, com base nos parâmetros usados.

<ContentDefinition Id="api.signuporsignin">
  <LoadUri>https://contoso.blob.core.windows.net/{Culture:LanguageName}/myHTML/unified.html</LoadUri>
  ...
</ContentDefinition>

Perfil técnico do Application Insights

Com o Azure Application Insights e os resolvedores de declarações, você pode obter informações sobre o comportamento do usuário. No perfil técnico do Application Insights, você envia declarações de entrada que são persistentes para o Azure Application Insights. Para obter mais informações, consulte Controlar o comportamento do usuário em jornadas do Azure AD B2C usando o Application Insights. O exemplo a seguir envia a ID da política, a ID de correlação, o idioma e a ID do cliente para o Azure Application Insights.

<TechnicalProfile Id="AzureInsights-Common">
  <DisplayName>Alternate Email</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.Insights.AzureApplicationInsightsProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="PolicyId" PartnerClaimType="{property:Policy}" DefaultValue="{Policy:PolicyId}" />
    <InputClaim ClaimTypeReferenceId="CorrelationId" PartnerClaimType="{property:CorrelationId}" DefaultValue="{Context:CorrelationId}" />
    <InputClaim ClaimTypeReferenceId="language" PartnerClaimType="{property:language}" DefaultValue="{Culture:RFC5646}" />
    <InputClaim ClaimTypeReferenceId="AppId" PartnerClaimType="{property:App}" DefaultValue="{OIDC:ClientId}" />
  </InputClaims>
</TechnicalProfile>

Política de terceira parte confiadora

Em um perfil técnico de política de terceira parte confiável, talvez você queira enviar a ID do locatário ou a ID de correlação para o aplicativo de terceira parte confiável dentro do JWT.

<RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
        <OutputClaim ClaimTypeReferenceId="correlationId" AlwaysUseDefaultValue="true" DefaultValue="{Context:CorrelationId}" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>

Próximos passos

  • Encontre mais exemplos de resolvedores de declarações no repositório GitHub da comunidade do Azure AD B2C