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=00001111-aaaa-2222-bbbb-3333cccc4444&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 SubjectNamingInfo , você controla o valor do assunto 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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
...
}
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>