Partilhar via


Gerir o acesso de utilizadores no Azure Active Directory B2C

Este artigo aborda como gerir o acesso dos utilizadores às suas aplicações com o Azure Active Directory B2C (Azure AD B2C). A gestão de acesso na sua aplicação inclui:

  • Identificar menores e controlar o acesso dos utilizadores à sua aplicação.
  • Exigir autorização parental para menores utilizarem as suas aplicações.
  • Recolher dados de nascimento e país/região de utilizadores.
  • Capturar um contrato de termos de utilização e acesso de disponibilidade.

Nota

No Azure Active Directory B2C, as políticas personalizadas são concebidas principalmente para abordar cenários complexos. Para a maioria dos cenários, recomendamos que utilize fluxos de utilizador incorporados. Se ainda não o fez, saiba mais sobre o pacote de introdução de políticas personalizadas em Introdução às políticas personalizadas no Active Directory B2C.

Controlar o acesso secundário

As aplicações e as organizações podem decidir bloquear a utilização de aplicações e serviços menores que não sejam direcionados para esta audiência. Em alternativa, as aplicações e as organizações podem decidir aceitar menores e, posteriormente, gerir o consentimento parental e proporcionar experiências permitidas para menores, conforme ditado pelas regras de negócio e permitido pela regulamentação.

Se um utilizador for identificado como menor, pode definir o fluxo de utilizador no Azure AD B2C para uma das três opções:

  • Enviar um JWT assinado id_token novamente para a aplicação: o utilizador está registado no diretório e é devolvido um token à aplicação. Em seguida, a aplicação continua através da aplicação de regras de negócio. Por exemplo, a aplicação pode prosseguir com um processo de consentimento parental. Para utilizar este método, opte por receber as afirmações ageGroup e consentProvidedForMinor da aplicação.

  • Enviar um token JSON não assinado para a aplicação: Azure AD B2C notifica a aplicação de que o utilizador é menor e fornece o estado do consentimento parental do utilizador. Em seguida, a aplicação continua através da aplicação de regras de negócio. Um token JSON não conclui uma autenticação com êxito com a aplicação. A aplicação tem de processar o utilizador não autenticado de acordo com as afirmações incluídas no token JSON, que podem incluir nome, e-mail, ageGroup e consentProvidedForMinor.

  • Bloquear o utilizador: se um utilizador for menor e não tiver sido fornecido o consentimento parental, Azure AD B2C pode notificar o utilizador de que está bloqueado. Não é emitido nenhum token, o acesso é bloqueado e a conta de utilizador não é criada durante um percurso de registo. Para implementar esta notificação, forneça uma página de conteúdo HTML/CSS adequada para informar o utilizador e apresentar as opções adequadas. A aplicação não precisa de mais nenhuma ação para novos registos.

Consoante a regulamentação da aplicação, o consentimento parental poderá ter de ser concedido por um utilizador que seja verificado como um adulto. Azure AD B2C não fornece uma experiência para verificar a idade de um indivíduo e, em seguida, permitir que um adulto verificado conceda consentimento parental a um menor. Esta experiência tem de ser fornecida pela aplicação ou por outro fornecedor de serviços.

Segue-se um exemplo de um fluxo de utilizador para recolher o consentimento parental:

  1. Uma operação do Microsoft Graph API identifica o utilizador como um menor e devolve os dados de utilizador à aplicação na forma de um token JSON não assinado.

  2. A aplicação processa o token JSON e mostra um ecrã ao menor, notificando-os de que é necessário consentimento parental e solicitando o consentimento de um encarregado de educação online.

  3. Azure AD B2C mostra um percurso de início de sessão no qual o utilizador pode iniciar sessão normalmente e emite um token para a aplicação que está definido para incluir legalAgeGroupClassification = "minorWithParentalConsent". A aplicação recolhe o endereço de e-mail do encarregado de educação e verifica se o elemento principal é um adulto. Para tal, utiliza uma origem fidedigna, como um escritório de ID nacional/regional, verificação de licença ou prova de cartão de crédito. Se a verificação for efetuada com êxito, a aplicação pede ao menor para iniciar sessão com o fluxo de utilizador Azure AD B2C. Se o consentimento for negado (por exemplo, se legalAgeGroupClassification = "minorWithoutParentalConsent"), Azure AD B2C devolve um token JSON (não um início de sessão) à aplicação para reiniciar o processo de consentimento. Opcionalmente, é possível personalizar o fluxo de utilizador para que um menor ou um adulto possa recuperar o acesso à conta de um menor ao enviar um código de registo para o endereço de e-mail do menor ou para o endereço de e-mail do adulto registado.

  4. A aplicação oferece uma opção ao menor para revogar o consentimento.

  5. Quando o menor ou o adulto revoga o consentimento, o microsoft Graph API pode ser utilizado para alterar consentProvidedForMinor para negado. Em alternativa, a aplicação pode optar por eliminar um menor cujo consentimento tenha sido revogado. Opcionalmente, é possível personalizar o fluxo de utilizador para que o menor autenticado (ou principal que está a utilizar a conta do menor) possa revogar o consentimento. Azure AD os registos B2C consentemProvidedForMinor como negado.

Para obter mais informações sobre legalAgeGroupClassification, consentProvidedForMinor e ageGroup, veja Tipo de recurso de utilizador. Para obter mais informações sobre atributos personalizados, veja Utilizar atributos personalizados para recolher informações sobre os seus consumidores. Quando endereça atributos expandidos com o Microsoft Graph API, tem de utilizar a versão longa do atributo, como extension_18b70cf9bb834edd8f38521c2583cd86_dateOfBirth: 2011-01-01T00:00:00Z.

Recolher dados de data de nascimento e país/região

As aplicações podem contar com Azure AD B2C para recolher a data de nascimento (DOB) e as informações de país/região de todos os utilizadores durante o registo. Se estas informações ainda não existirem, a aplicação pode pedi-la ao utilizador durante o próximo percurso de autenticação (início de sessão). Os utilizadores não podem continuar sem fornecer as respetivas informações do DOB e do país/região. Azure AD B2C utiliza as informações para determinar se o indivíduo é considerado menor de acordo com as normas regulamentares desse país/região.

Um fluxo de utilizador personalizado pode recolher informações do DOB e do país/região e utilizar Azure AD transformação de afirmações B2C para determinar o ageGroup e manter o resultado (ou manter diretamente as informações do DOB e do país/região) no diretório.

Os passos seguintes mostram a lógica utilizada para calcular ageGroup a partir da data de nascimento do utilizador:

  1. Tente localizar o país/região através do código país/região na lista. Se o país/região não for encontrado, recue para Predefinição.

  2. Se o nó MinorConsent estiver presente no elemento país/região:

    a. Calcule a data em que o utilizador deve ter nascido para ser considerado um adulto. Por exemplo, se a data atual for 14 de março de 2015 e MinorConsent for 18, a data de nascimento não deve ser posterior a 14 de março de 2000.

    b. Compare a data de nascimento mínima com a data de nascimento real. Se a data de nascimento mínima for anterior à data de nascimento do utilizador, o cálculo devolve Menor como o cálculo do grupo etário.

  3. Se o nó MinorNoConsentRequired estiver presente no elemento país/região, repita os passos 2a e 2b com o valor de MinorNoConsentRequired. O resultado de 2b devolve MinorNoConsentRequired se a data de nascimento mínima for antes da data de nascimento do utilizador.

  4. Se nenhum cálculo devolver verdadeiro, o cálculo devolve Adulto.

Se uma aplicação tiver recolhido dados DOB ou país/região de forma fiável por outros métodos, a aplicação poderá utilizar o Graph API para atualizar o registo do utilizador com estas informações. Por exemplo:

  • Se um utilizador for conhecido por ser um adulto, atualize o atributo de diretório ageGroup com um valor de Adulto.
  • Se um utilizador for conhecido por ser menor, atualize o atributo de diretório ageGroup com um valor de Menor e defina consentProvidedForMinor, conforme adequado.

Regras de cálculo secundárias

A idade envolve dois valores de idade: a idade em que alguém já não é considerado menor, e a idade em que um menor deve ter consentimento parental. A tabela seguinte lista as regras de idade que são utilizadas para definir um menor e um menor que necessitam de consentimento.

País/Região Nome do país/região Idade de consentimento menor Idade secundária
Predefinição Nenhuma Nenhuma 18
AE Emirados Árabes Unidos Nenhuma 21
AT Áustria 14 18
BE Bélgica 14 18
BG Bulgária 16 18
BH Barém Nenhuma 21
CM Camarões Nenhuma 21
CY Chipre 16 18
CZ República Checa 16 18
DE Alemanha 16 18
DK Dinamarca 16 18
EE Estónia 16 18
EG Egito Nenhuma 21
ES Espanha 13 18
FR França 16 18
GB Reino Unido 13 18
GR Grécia 16 18
HR Croácia 16 18
HU Hungria 16 18
IE Irlanda 13 18
TI Itália 16 18
KR Coreia, República da 14 18
LT Lituânia 16 18
LU Luxemburgo 16 18
LV Letónia 16 18
MT Malta 16 18
ND Namíbia Nenhuma 21
NL Países Baixos 16 18
PL Polónia 13 18
PT Portugal 16 18
RO Roménia 16 18
SE Suécia 13 18
SG Singapura Nenhuma 21
SI Eslovénia 16 18
SK Eslováquia 16 18
DT Chade Nenhuma 21
TH Tailândia Nenhuma 20
TW Taiwan Nenhuma 20
EUA Estados Unidos da América 13 18

Capturar contrato de termos de utilização

Quando desenvolve a sua aplicação, normalmente captura a aceitação dos termos de utilização dos utilizadores nas respetivas aplicações sem a participação no diretório de utilizadores ou apenas secundária. No entanto, é possível utilizar uma Azure AD fluxo de utilizador B2C para recolher a aceitação dos termos de utilização de um utilizador, restringir o acesso se a aceitação não for concedida e impor a aceitação de futuras alterações aos termos de utilização, com base na data da aceitação mais recente e na data da versão mais recente dos termos de utilização.

Os Termos de Utilização também podem incluir "Consentimento para partilhar dados com terceiros". Consoante os regulamentos locais e as regras de negócio, pode recolher a aceitação de ambas as condições combinadas por um utilizador ou pode permitir que o utilizador aceite uma condição e não a outra.

Os passos seguintes descrevem como pode gerir os termos de utilização:

  1. Registe a aceitação dos termos de utilização e a data de aceitação com os atributos Graph API e expandidos. Pode fazê-lo ao utilizar fluxos de utilizador incorporados e políticas personalizadas. Recomendamos que crie e utilize os atributos extension_termsOfUseConsentDateTime e extension_termsOfUseConsentVersion .

  2. Crie uma caixa de verificação necessária com o nome "Aceitar Termos de Utilização" e registe o resultado durante a inscrição. Pode fazê-lo ao utilizar fluxos de utilizador incorporados e políticas personalizadas.

  3. Azure AD B2C armazena o contrato de termos de utilização e a aceitação do utilizador. Pode utilizar o Graph API para consultar o estado de qualquer utilizador ao ler o atributo de extensão utilizado para registar a resposta (por exemplo, leia os termosOfUseTestUpdateDateTime). Pode fazê-lo ao utilizar fluxos de utilizador incorporados e políticas personalizadas.

  4. Exigir a aceitação dos termos de utilização atualizados ao comparar a data de aceitação com a data da versão mais recente dos termos de utilização. Só pode comparar as datas com um fluxo de utilizador personalizado. Utilize o atributo expandido extension_termsOfUseConsentDateTime e compare o valor com a afirmação de termsOfUseTextUpdateDateTime. Se a aceitação for antiga, force uma nova aceitação ao apresentar um ecrã auto-afirmado. Caso contrário, bloqueie o acesso através da lógica de política.

  5. Exigir a aceitação dos termos de utilização atualizados ao comparar o número da versão da aceitação com o número de versão aceite mais recentemente. Só pode comparar números de versão com um fluxo de utilizador personalizado. Utilize o atributo expandido extension_termsOfUseConsentDateTime e compare o valor com a afirmação de extension_termsOfUseConsentVersion. Se a aceitação for antiga, force uma nova aceitação ao apresentar um ecrã auto-afirmado. Caso contrário, bloqueie o acesso através da lógica de política.

Pode capturar a aceitação dos termos de utilização nos seguintes cenários:

  • Um novo utilizador está a inscrever-se. Os termos de utilização são apresentados e o resultado de aceitação é armazenado.
  • Um utilizador está a iniciar sessão que aceitou anteriormente os termos de utilização mais recentes ou ativos. Os termos de utilização não são apresentados.
  • Um utilizador está a iniciar sessão que ainda não aceitou os termos de utilização mais recentes ou ativos. Os termos de utilização são apresentados e o resultado de aceitação é armazenado.
  • Um utilizador está a iniciar sessão que já aceitou uma versão mais antiga dos termos de utilização, que estão agora atualizados para a versão mais recente. Os termos de utilização são apresentados e o resultado de aceitação é armazenado.

A imagem seguinte mostra o fluxo de utilizador recomendado:

Diagrama de fluxograma a mostrar o fluxo de utilizador de aceitação recomendado

Segue-se um exemplo de um consentimento dos termos de utilização baseados em datas numa afirmação. Se a extension_termsOfUseConsentDateTime afirmação for mais antiga do que 2025-01-15T00:00:00, force uma nova aceitação ao verificar a termsOfUseConsentRequired afirmação Booleana e ao apresentar um ecrã auto-afirmado.

<ClaimsTransformations>
  <ClaimsTransformation Id="GetNewUserAgreeToTermsOfUseConsentDateTime" TransformationMethod="GetCurrentDateTime">
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="extension_termsOfUseConsentDateTime" TransformationClaimType="currentDateTime" />
    </OutputClaims>
  </ClaimsTransformation>
  <ClaimsTransformation Id="IsTermsOfUseConsentRequired" TransformationMethod="IsTermsOfUseConsentRequired">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="extension_termsOfUseConsentDateTime" TransformationClaimType="termsOfUseConsentDateTime" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="termsOfUseTextUpdateDateTime" DataType="dateTime" Value="2025-01-15T00:00:00" />
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="result" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>

Segue-se um exemplo de um consentimento dos termos de utilização baseados na versão numa afirmação. Se a extension_termsOfUseConsentVersion afirmação não for igual a V1, force uma nova aceitação ao verificar a termsOfUseConsentRequired afirmação Booleana e ao apresentar um ecrã auto-afirmado.

<ClaimsTransformations>
  <ClaimsTransformation Id="GetEmptyTermsOfUseConsentVersionForNewUser" TransformationMethod="CreateStringClaim">
    <InputParameters>
      <InputParameter Id="value" DataType="string" Value=""/>
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="extension_termsOfUseConsentVersion" TransformationClaimType="createdClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  <ClaimsTransformation Id="GetNewUserAgreeToTermsOfUseConsentVersion" TransformationMethod="CreateStringClaim">
    <InputParameters>
      <InputParameter Id="value" DataType="string" Value="V1"/>
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="extension_termsOfUseConsentVersion" TransformationClaimType="createdClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  <ClaimsTransformation Id="IsTermsOfUseConsentRequiredForVersion" TransformationMethod="CompareClaimToValue">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="extension_termsOfUseConsentVersion" TransformationClaimType="inputClaim1" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="compareTo" DataType="string" Value="V1" />
      <InputParameter Id="operator" DataType="string" Value="not equal" />
      <InputParameter Id="ignoreCase" DataType="string" Value="true" />
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>

Passos seguintes