RelyingParty

Observação

No Azure Active Directory B2C, as políticas personalizadas são projetadas principalmente para tratar de cenários complexos. Para a maioria dos cenários, recomendamos que você use fluxos de usuários predefinidos. Se você ainda não fez isso, saiba mais sobre o pacote de início de política personalizado em Introdução às políticas personalizadas no Active Directory B2C.

O elemento RelyingParty especifica o percurso do usuário a ser aplicada à solicitação atual para o Azure Active Directory B2C (Azure AD B2C). Também especifica a lista de declarações de que o aplicativo de RP (terceira parte confiável) precisa como parte do token emitido. Um aplicativo de RP, como um aplicativo Web, móvel ou da área de trabalho, chama o arquivo de política de RP. O arquivo de política de RP executa uma tarefa específica, como entrar, redefinir senha ou editar perfil. Vários aplicativos podem usar a mesma política RP e um único aplicativo pode usar várias políticas. Todos os aplicativos de RP recebem o mesmo token com declarações e o usuário passa pelo mesmo percurso do usuário.

A exemplo a seguir mostra um elemento RelyingParty no arquivo de política B2C_1A_signup_signin:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="https://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
  PolicySchemaVersion="0.3.0.0"
  TenantId="your-tenant.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin"
  PublicPolicyUri="http://your-tenant.onmicrosoft.com/B2C_1A_signup_signin">

  <BasePolicy>
    <TenantId>your-tenant.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <UserJourneyBehaviors>
      <SingleSignOn Scope="Tenant" KeepAliveInDays="7"/>
      <SessionExpiryType>Rolling</SessionExpiryType>
      <SessionExpiryInSeconds>900</SessionExpiryInSeconds>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="your-application-insights-key" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      <ContentDefinitionParameters>
        <Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
      </ContentDefinitionParameters>
    </UserJourneyBehaviors>
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Description>The policy profile</Description>
      <Protocol Name="OpenIdConnect" />
      <Metadata>collection of key/value pairs of data</Metadata>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="loyaltyNumber" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>
  ...

O elemento RelyingParty opcional contém os seguintes elementos:

Elemento Ocorrências Descrição
DefaultUserJourney 1:1 O percurso do usuário padrão para o aplicativo de RP.
Pontos de extremidade 0:1 Uma lista de pontos de extremidade. Para obter mais informações, consulte ponto de extremidade UserInfo.
UserJourneyBehaviors 0:1 O escopo dos comportamentos do percurso do usuário.
TechnicalProfile 1:1 Um perfil técnico é compatível com o aplicativo de RP. O perfil técnico fornece um contrato para o aplicativo de RP contatar o Azure AD B2C.

Você precisa de criar os elementos filho RelyingParty na ordem apresentada na tabela anterior.

Pontos de extremidade

O elemento Endpoints contém o seguinte elemento:

Elemento Ocorrências Descrição
Ponto de extremidade 1:1 Uma referência para um ponto de extremidade.

O elemento Endpoint contém os seguintes atributos:

Atributo Obrigatório Descrição
ID Yes Um identificador exclusivo do ponto de extremidade.
UserJourneyReferenceId Yes Um identificador de percurso do usuário na política. Para obter mais informações, confira percursos do usuário

O exemplo a seguir mostra uma terceira parte confiável com o ponto de extremidade UserInfo:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <Endpoints>
    <Endpoint Id="UserInfo" UserJourneyReferenceId="UserInfoJourney" />
  </Endpoints>
  ...

DefaultUserJourney

O elemento DefaultUserJourney especifica uma referência ao identificador do percurso do usuário que normalmente é definido na política de Base ou de Extensões. Os exemplos a seguir mostram o percurso do usuário de inscrição ou entrada especificado no elemento RelyingParty:

Política B2C_1A_signup_signin:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn">
  ...

B2C_1A_TrustFrameWorkBase ou B2C_1A_TrustFrameworkExtensionPolicy:

<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
  ...

O elemento DefaultUserJourney contém o seguinte atributo:

Atributo Obrigatório Descrição
ReferenceId Yes Um identificador de percurso do usuário na política. Para obter mais informações, confira percursos do usuário

UserJourneyBehaviors

O elemento UserJourneyBehaviors contém os seguintes elementos:

Elemento Ocorrências Descrição
SingleSignOn 0:1 O escopo do comportamento da sessão de SSO (logon único) de um percurso do usuário.
SessionExpiryType 0:1 O comportamento de autenticação da sessão. Valores possíveis: Rolling ou Absolute. O valor Rolling (padrão) indica que o usuário permanece conectado desde que o usuário esteja ativo continuamente no aplicativo. O valor Absolute indica que o usuário será forçado a autenticar-se novamente após o período especificado por um tempo de vida de sessão de aplicativo.
SessionExpiryInSeconds 0:1 O tempo de vida do cookie da sessão do Azure AD B2C especificado como um inteiro armazenado no navegador do usuário mediante uma autenticação bem-sucedida. O padrão é de 86.400 segundos (24 horas). O mínimo é de 900 segundos (15 minutos). O máximo é 86.400 segundos (24 horas).
JourneyInsights 0:1 A chave de instrumentação do Azure Application Insights a ser usada.
ContentDefinitionParameters 0:1 A lista de pares chave-valor a serem acrescentados ao URI da carga de definição de conteúdo.
JourneyFraming 0:1 Permite que a interface do usuário dessa política seja carregada em um iframe.
ScriptExecution 0:1 Os modos de execução do JavaScript com suporte. Valores possíveis: Allow ou Disallow (padrão).

Ao usar os elementos acima, você precisará adicioná-los ao elemento UserJourneyBehaviors na ordem especificada na tabela. Por exemplo, o elemento JourneyInsights precisa ser adicionado antes (acima) do elemento ScriptExecution.

SingleSignOn

O elemento SingleSignOn contém os seguintes atributos:

Atributo Obrigatório Descrição
Escopo Yes O escopo do comportamento de logon único. Valores possíveis: Suppressed, Tenant, Application ou Policy. O valor Suppressed indica que o comportamento é suprimido e o usuário sempre será solicitado a fornecer uma seleção de provedor de identidade. O valor Tenant indica que o comportamento é aplicado a todas as políticas no locatário. Por exemplo, um usuário navegando por dois percursos de política para um locatário não é solicitado a fazer uma seleção de provedor de identidade. O valor Application indica que o comportamento é aplicado a todas as políticas para o aplicativo que está fazendo a solicitação. Por exemplo, um usuário navegando por dois percursos de política para um aplicativo não é solicitado a fazer uma seleção de provedor de identidade. O valor Policy indica que o comportamento se aplica somente a uma política. Por exemplo, um usuário que navega pelas dois percursos de política para uma estrutura de confiança é solicitado a informar uma seleção de provedor de identidade ao alternar entre políticas.
KeepAliveInDays No Controla por quanto tempo o usuário permanece conectado. A definição do valor como 0 desliga a funcionalidade KMSI. O padrão é 0 (desabilitado). O mínimo é de 1 dia. O máximo é de 90 dias. Para obter mais informações, confira Manter-me conectado.
EnforceIdTokenHintOnLogout No Força a passagem de um token de ID emitido anteriormente para o ponto de extremidade de logout como uma dica sobre a sessão autenticada atual do usuário final com o cliente. Valores possíveis: false (padrão) ou true. Para obter mais informações, consulte entrada na Web com o OpenID Connect.

JourneyInsights

O elemento JourneyInsights contém os seguintes atributos:

Atributo Obrigatório Descrição
TelemetryEngine Yes O valor deve ser ApplicationInsights.
InstrumentationKey Yes A cadeia de caracteres que contém a chave de instrumentação para o elemento de insights de aplicativo.
DeveloperMode Yes Valores possíveis: true ou false. Se true, o Application Insights acelerará a telemetria pelo pipeline de processamento. Essa configuração é boa para o desenvolvimento, mas restrita em grandes volumes. Atualmente, os logs de atividades detalhados são projetados apenas para ajudar no desenvolvimento de políticas personalizadas. Não use o modo de desenvolvimento em produção. Os logs coletam todas as declarações enviadas entre os provedores de identidade durante o desenvolvimento. Se for usado em produção, o desenvolvedor assumirá a responsabilidade pelos dados pessoais coletados no log do App Insights que ele possui. Esses logs detalhados são coletados apenas quando esse valor é definido como true.
ClientEnabled Yes Valores possíveis: true ou false. Se true, enviará o script do lado do cliente do Application Insights para acompanhar erros de exibição de página e do lado do cliente.
ServerEnabled Yes Valores possíveis: true ou false. Se true, enviará o JSON UserJourneyRecorder existente como um evento personalizado para o Application Insights.
TelemetryVersion Yes O valor deve ser 1.0.0.

Para obter mais informações, confira Coleta de Logs

ContentDefinitionParameters

Usando políticas personalizadas no Azure AD B2C, você pode enviar um parâmetro em uma cadeia de consulta. Passando o parâmetro para seu ponto de extremidade HTML, é possível alterar dinamicamente o conteúdo da página. Por exemplo, é possível alterar a imagem de tela de fundo na página de inscrição ou de entrada do Azure AD B2C, com base em um parâmetro passado do seu aplicativo Web ou móvel. O Azure AD B2C passa os parâmetros de cadeia de consulta ao seu arquivo HTML dinâmico, como um arquivo aspx.

O exemplo a seguir passa um parâmetro denominado campaignId com um valor de hawaii na cadeia de consulta:

https://login.microsoft.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?pB2C_1A_signup_signin&client_id=a415078a-0402-4ce3-a9c6-ec1947fcfb3f&nonce=defaultNonce&redirect_uri=http%3A%2F%2Fjwt.io%2F&scope=openid&response_type=id_token&prompt=login&campaignId=hawaii

O elemento ContentDefinitionParameters contém o seguinte elemento:

Elemento Ocorrências Descrição
ContentDefinitionParameter 0:n Uma cadeia de caracteres que contém o par chave-valor acrescentado à cadeia de consulta de uma carga de definição de conteúdo URI.

O elemento ContentDefinitionParameter contém o seguinte atributo:

Atributo Obrigatório Descrição
Nome Yes O nome do par chave-valor.

Para obter mais informações, confira Configurar a interface do usuário com conteúdo dinâmico usando políticas personalizadas

JourneyFraming

O elemento JourneyFraming contém os seguintes atributos:

Atributo Obrigatório Descrição
habilitado Yes Permite que essa política seja carregada em um iframe. Valores possíveis: false (padrão) ou true.
Origens Yes Contém os domínios que carregarão o host do iframe. Para obter mais informações, consulte Carregar o Azure B2C em um iframe.

TechnicalProfile

O elemento TechnicalProfile contém o seguinte atributo:

Atributo Obrigatório Descrição
ID Yes O valor deve ser PolicyProfile.

O TechnicalProfile contém os seguintes elementos:

Elemento Ocorrências Descrição
DisplayName 1:1 A cadeia de caracteres que contém o nome do perfil técnico.
Descrição 0:1 A cadeia de caracteres que contém a descrição do perfil técnico.
Protocolo 1:1 O protocolo usado para federação.
Metadados 0:1 A coleção de Item de pares chave-valor utilizados pelo protocolo de comunicação com o ponto de extremidade no decorrer de uma transação para configurar a interação entre a terceira parte confiável e outros participantes da comunidade.
InputClaims 1:1 Uma lista de tipos de declaração obtidos como entrada no perfil técnico. Cada um desses elementos contém referência a um ClaimType já definido na seção ClaimsSchema ou em uma política da qual este arquivo de política herda.
OutputClaims 1:1 Uma lista de tipos de declaração obtidos como saída no perfil técnico. Cada um desses elementos contém referência a um ClaimType já definido na seção ClaimsSchema ou em uma política da qual este arquivo de política herda.
SubjectNamingInfo 1:1 O nome da entidade usado nos tokens.

O elemento Protocol contém os seguinte atributo:

Atributo Obrigatório Descrição
Nome Yes O nome de um protocolo válido com suporte no Azure AD B2C que é usado como parte do perfil técnico. Valores possíveis: OpenIdConnect ou SAML2. O valor OpenIdConnect representa o padrão de protocolo do OpenID Connect 1.0 de acordo com a especificação OpenID Foundation. O representa SAML2 o padrão de protocolo SAML 2.0 de acordo com a especificação OASIS.

Metadados

Quando o protocolo é SAML, um elemento de metadados contém os elementos a seguir. Para obter mais informações, consulte Opões para registrar um aplicativo SAML no Azure AD B2C.

Atributo Obrigatório Descrição
IdpInitiatedProfileEnabled No Indica se há suporte para o fluxo iniciado por IDP. Valores possíveis: true ou false (padrão).
XmlSignatureAlgorithm No O método que o Azure AD B2C usa para assinar a Resposta SAML. Valores possíveis: Sha256, Sha384, Sha512 ou Sha1. Certifique-se de configurar o algoritmo de assinatura em ambos os lados com o mesmo valor. Use apenas o algoritmo com suporte do seu certificado. Para configurar a Asserção SAML, consulte Metadados do perfil técnico do emissor do SAML.
DataEncryptionMethod No Indica o método que Azure AD B2C usa para criptografar os dados usando o algoritmo de criptografia AES (Advanced Encryption Standard). Os metadados controlam o valor do elemento <EncryptedData> na resposta SAML. Valores possíveis: Aes256 (padrão), Aes192, Sha512 ou Aes128.
KeyEncryptionMethod No Indica o método que o Azure AD B2C usa para criptografar a cópia da chave que foi usada para criptografar os dados. Os metadados controlam o valor do elemento <EncryptedKey> na resposta SAML. Os valores possíveis são Rsa15 (padrão) - algoritmo RSA PKCS (Public Key Cryptography Standard) versão 1.5 e RsaOaep - algoritmo de criptografia RSA OAEP (Optimal Asymmetric Encryption Padding) de RSA.
UseDetachedKeys No Valores possíveis: true ou false (padrão). Quando o valor é definido como true, o Azure AD B2C altera o formato das declarações criptografadas. O uso de chaves desanexadas adiciona a declaração criptografada como um filho do EncrytedAssertion em oposição ao EncryptedData.
WantsSignedResponses No Indica se Azure AD B2C assina a seção Response da resposta SAML. Valores possíveis: true (padrão) ou false.
RemoveMillisecondsFromDateTime No Você pode especificar se os milissegundos serão removidos dos valores datetime na resposta SAML (incluindo IssueInstant, NotBefore, NotOnOrAfter e AuthnInstant). Valores possíveis: false (padrão) ou true.
RequestContextMaximumLengthInBytes No Indica o comprimento máximo do parâmetro RelayState de aplicativos SAML. O padrão é 1000. O máximo é 2048.

InputClaims

O elemento InputClaims contém o seguinte elemento:

Elemento Ocorrências Descrição
InputClaim 0:n Um tipo de declaração de entrada esperado.

O elemento InputClaim contém os seguintes atributos:

Atributo Obrigatório Descrição
ClaimTypeReferenceId Yes Uma referência a um ClaimType já definido na seção ClaimsSchema no arquivo de política.
DefaultValue No Um valor padrão que poderá ser usado se o valor da declaração estiver vazio.
PartnerClaimType No Envia a declaração em um nome diferente, conforme configurado na definição ClaimType.

OutputClaims

O elemento OutputClaims contém o seguinte elemento:

Elemento Ocorrências Descrição
OutputClaim 0:n O nome de um tipo de declaração esperado na lista com suporte para a política que a terceira parte confiável assina. Essa declaração serve como uma saída para o perfil técnico.

O elemento OutputClaim contém os seguintes atributos:

Atributo Obrigatório Descrição
ClaimTypeReferenceId Yes Uma referência a um ClaimType já definido na seção ClaimsSchema no arquivo de política.
DefaultValue No Um valor padrão que poderá ser usado se o valor da declaração estiver vazio.
PartnerClaimType No Envia a declaração em um nome diferente, conforme configurado na definição ClaimType.

SubjectNamingInfo

Com o elemento SubjectNameingInfo, você controla o valor da entidade do token:

  • Token JTW - a declaração sub. Essa é uma entidade de segurança sobre a qual o token declara informações, como o usuário de um aplicativo. Esse valor é imutável e não pode ser reatribuído nem reutilizado. Ele pode ser usado para executar verificações de autorização seguras, por exemplo, quando o token é usado para acessar um recurso. Por padrão, a declaração de entidade é preenchida com a ID de objeto do usuário no diretório. Para obter mais informações, confira Token, sessão e configuração de logon único.
  • Token SAML - o elemento <Subject><NameID> que identifica o elemento de subject. O formato NameId pode ser modificado.

O elemento SubjectNamingInfo contém o seguinte atributo:

Atributo Obrigatório Descrição
ClaimType Yes Uma referência a PartnerClaimType da declaração de saída. As declarações de saída devem ser definidas na política de terceira parte confiável da coleção OutputClaims com um PartnerClaimType. Por exemplo, <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />, ou <OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInName" />.
Formatar No Usado para terceiras partes confiáveis do SAML para definir o formato NameId retornado na Declaração SAML.

O exemplo a seguir mostra como definir uma terceira parte confiável do OpenId Connect. As informações de nome da entidade são configuradas como a objectId:

<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" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

O token JWT inclui a declaração sub com a objectId do usuário:

{
  ...
  "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
  ...
}

O exemplo a seguir mostra como definir uma terceira parte confiável do OpenId Connect. As informações do nome da entidade estão configuradas como objectId e a NameId format foi fornecida:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
  </TechnicalProfile>
</RelyingParty>