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.
Obter consentimento parental
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:
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.
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.
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.
A aplicação oferece uma opção ao menor para revogar o consentimento.
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:
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.
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.
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.
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:
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 .
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.
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.
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.
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:
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
- Ative o Age Gating no Azure AD B2C.
- Para saber como eliminar e exportar dados de utilizador, veja Gerir dados de utilizador.
- Para obter um exemplo de política personalizada que implementa um pedido de termos de utilização, veja A B2C IEF Custom Policy - Sign Up and Sign In with "Terms of Use" (Política Personalizada do IEF B2C – Inscrever-se e Iniciar Sessão com o pedido "Termos de Utilização".