Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como configurar uma extensão de autenticação personalizada que valida declarações de ID verificadas durante a recuperação de conta do Microsoft Entra. No fluxo de recuperação de conta, os ouvintes de eventos podem ser usados para estender o processo de validação de declaração:
- O evento OnVerifiedIdClaimValidation ocorre quando um usuário inicia a recuperação de conta e apresenta declarações de ID verificadas. Você pode adicionar ações como validar declarações em uma fonte de dados autoritativa (como um sistema de RH, um banco de dados de aplicativo ou qualquer sistema de registros de funcionários) e retornar uma decisão de aprovação ou falha.
Além de criar uma extensão de autenticação personalizada, você precisa criar uma API REST que defina as ações de fluxo de trabalho a serem executadas para o evento. Este artigo demonstra uma maneira rápida de começar a usar um C# Azure Function implantado a partir de um repositório de exemplo. Com Azure Functions, você executa seu código em um ambiente sem servidor sem precisar primeiro criar uma VM (máquina virtual) ou publicar um aplicativo Web.
Pré-requisitos
- Uma assinatura do Azure. Se você não tiver uma conta existente da Azure, inscreva-se em uma avaliação gratuita.
- Um locatário do Microsoft Entra ID com recuperação de conta habilitada.
- Pelo menos as funções administrador de aplicativos e administrador de autenticação .
Como funciona
Durante a recuperação da conta, um usuário que perdeu todos os métodos de autenticação deve restabelecer sua identidade. A extensão de autenticação personalizada adiciona uma etapa de validação de declaração a esse fluxo:
O OnVerifiedIdClaimValidation evento é o gancho de pré-validação no pipeline de recuperação. Ele permite que você conecte a lógica de validação personalizada – pesquisas de RH, verificações de banco de dados externos ou verificação de confiança do parceiro – antes que Microsoft Entra ID prossiga com a recuperação.
Etapa 1: Criar uma API REST de extensões de autenticação personalizada (aplicativo de funções Azure)
Nesta etapa, você implantará um aplicativo de funções Azure que serve como a API REST para sua extensão de autenticação personalizada. A função recebe declarações de ID verificadas de Microsoft Entra ID durante a recuperação da conta e as valida em uma fonte de dados autoritativa.
A função de amostra está disponível para implantação com um único clique. Ele implanta um aplicativo de funções Azure (.NET 10, modelo de trabalho isolado) no plano de consumo com o Application Insights e uma conta de armazenamento.
1.1 Implantar a função Azure
Selecione o botão Deploy para Azure:
Preencha os parâmetros de implantação:
Parâmetro Description Nome do aplicativo de funções Um nome global exclusivo para o Aplicativo de Funções (por exemplo, contoso-recovery-claims).URL do repositório Pré-preenchido com a URL do repositório GitHub. Branch mainTipo de conta de armazenamento Standard_LRS(padrão).Location Selecione uma região Azure próxima dos usuários. Deixe os parâmetros opcionais em branco por enquanto – configure-os nas próximas etapas.
Selecione Examinar + criar, depois Criar.
Aguarde até que a implantação seja concluída (normalmente de 2 a 3 minutos).
Observação
O modelo do ARM implanta o Aplicativo de Funções no plano de consumo (camada Y1/Dinâmica). O dimensionamento é totalmente automático— Azure adiciona e remove instâncias com base no volume de solicitação de entrada. Para teste ou desenvolvimento, convém alternar para o plano Premium (EP1 ou superior) para evitar inícios frios. Para alterar os planos, vá para o seu >Aplicativo de Funções plano de Serviço de Aplicativo>Alterar plano de Serviço de Aplicativo>, selecione ou crie um plano com a camada desejada.
1.2 Obter a URL da função
- Depois de implantado, acesse o recurso Function App.
- Selecione Functions>CustomClaimMatching>Obter URL da Função.
- Copie a URL. Parece com:
https://<your-function-app>.azurewebsites.net/api/CustomClaimMatching
1.3 Configurar a fonte de dados de teste
Para teste, a função dá suporte a um arquivo Excel hospedado em qualquer servidor Web com acesso de leitura como fonte de dados. Em produção, você pode alternar para o provedor de API de RH (consulte Alternar para produção: use o provedor de API de RH).
Baixe o arquivo de Excel de exemplo da pasta SampleData no repositório ou crie seu próprio com estas colunas:
ID do Funcionário UPN firstName lastName fullName dateOfBirth tipoDeDocumento documentId data de validade do documento E001 user@contoso.com John Cerva Júlio Pinto 1990-01-15 Passaporte AB123456 15-01-2028 Dica
Para adicionar uma nova declaração, adicione uma coluna com o nome da declaração como o cabeçalho. A função compara dinamicamente as chaves de reivindicação da solicitação com os cabeçalhos de coluna — sem necessidade de alterações no código.
Observação
Por padrão, o aplicativo de funções valida apenas a declaração de número do documento (
documentId). Para corresponder a declarações adicionais, comofirstName,dateOfBirthouemployeeId, atualize a lógica de validação no código da função Azure.Carregue o arquivo em um servidor Web, compartilhamento de arquivos ou serviço de armazenamento em nuvem (por exemplo, Armazenamento de Blobs do Azure, SharePoint ou qualquer local acessível por HTTP).
Obtenha uma URL de download direto para o arquivo. A URL deve estar acessível sem entrada interativa.
No portal do Azure, vá para o Aplicativo de Funções >Configurações>Variáveis de ambiente. O modelo de implantação cria previamente essas variáveis com valores padrão. Verifique e atualize o seguinte:
Name Ação Value ClaimsValidator__ProviderVerificar (pré-criado como excel)excelExcel__ShareUrlAtualizar (pré-criado, mas vazio) O URL de download direto do arquivo de Excel. Excel__SheetNameVerificar (pré-criado como Sheet1)Sheet1(ou o nome da planilha).Selecione Aplicar, depois Confirmar.
Etapa 2: criar e registrar uma extensão de autenticação personalizada
Nesta etapa, você registrará uma extensão de autenticação personalizada que Microsoft Entra ID usa para chamar sua função Azure. A extensão de autenticação personalizada contém informações sobre o endpoint da sua API REST, a ação de validação de reivindicação que ela analisa a partir de sua API REST e como autenticar na sua API REST.
Observação
Você pode ter no máximo 100 políticas de extensão personalizadas. No entanto, apenas uma extensão de autenticação personalizada por locatário é permitida para o tipo de evento OnVerifiedIdClaimValidation .
Entre no centro de administração Microsoft Entra como pelo menos um Administrador de Aplicativos e Administrador de Autenticação.
Navegue até Entra ID>Aplicativos empresariais>Extensões de autenticação personalizadas.
Selecione Criar uma extensão personalizada.
No Básico, selecione o evento OnVerifiedIdClaimValidation e selecione Avançar.
Na Configuração de Endpoint, preencha as seguintes propriedades:
-
Nome: Um nome para sua extensão de autenticação personalizada. Por exemplo,
Account Recovery Claims Validation. -
Target URL: A URL da Função do Azure. Por exemplo:
https://<your-function-app>.azurewebsites.net/api/CustomClaimMatching -
Descrição: Uma descrição para a extensão. Por exemplo,
Validates VID claims against HR data during account recovery.
-
Nome: Um nome para sua extensão de autenticação personalizada. Por exemplo,
Selecione Próximo.
Na Autenticação de API, selecione a opção Criar novo registro de aplicativo para criar um registro de aplicativo que represente seu aplicativo de funções.
Dê um nome ao aplicativo, por exemplo,
Azure Functions authentication events API.Selecione Próximo.
Selecione Criar; isso vai criar a extensão de autenticação personalizada e o registro de aplicativo associado.
2.1 Conceder consentimento do administrador
Depois que sua extensão de autenticação personalizada for criada, dê o consentimento ao aplicativo registrado, o que permitirá que a extensão de autenticação personalizada se autentique em sua API.
- Navegue até Entra ID>Enterprise apps>Extensões de autenticação personalizada.
- Selecione sua extensão de autenticação personalizada na lista.
- Na guia Visão geral, selecione o botão Conceder permissão para dar consentimento do administrador ao aplicativo registrado. A extensão de autenticação personalizada usa
client_credentialspara autenticar no aplicativo de funções Azure usando a permissãoReceive custom authentication extension HTTP requests. Selecione Aceitar.
Etapa 3: Adicionar a extensão de autenticação personalizada à política de recuperação de conta
Agora você associa a extensão de autenticação personalizada às configurações de validação de conta do perfil de verificação de identidade para que ela seja invocada durante o fluxo de recuperação.
Entre no centro de administração Microsoft Entra como pelo menos um Administrador de Aplicativos e Administrador de Autenticação.
Navegue até Entra ID>Recuperação de Conta>Perfis de verificação de identidade.
Selecione o perfil de verificação de identidade que você deseja atualizar (ou crie um novo).
Na etapa de validação de conta , em validações de declaração adicionais, alterne Habilitar para Ativar.
Na lista suspensa de extensão selecionada, selecione a extensão de autenticação personalizada que você criou na Etapa 2 (
Account Recovery Claims Validation).Selecione Examinar e finalizar e, em seguida, Salvar.
Etapa 4: Testar a função (antes de adicionar a autenticação)
Antes de configurar a autenticação (Etapa 5), verifique se a lógica de correspondência de declarações da função funciona chamando-a diretamente. Neste ponto, a função não deve ter nenhuma autenticação configurada — nenhum provedor de identidade EasyAuth e as variáveis de ambiente EntraId__TenantId / EntraId__ClientId devem estar vazias.
4.1 Testar a função diretamente
Aviso
Esta etapa testa a função sem autenticação configurada. Isso é apenas para desenvolvimento e teste. Não exponha sua função sem autenticação em produção. Conclua a Etapa 5 para configurar a autenticação antes de implantar na produção.
Observação
Mesmo sem nenhum provedor de identidade de autenticação configurado, Azure Functions ainda requer um cabeçalho Authorization: Bearer. Você pode passar qualquer valor (por exemplo, Bearer test) durante o teste local. Em produção, Microsoft Entra ID fornece um token válido automaticamente.
Abra um terminal e execute:
$body = @' { "type": "microsoft.graph.authenticationEvent.verifiedIdClaimValidation", "source": "/tenants/<tenant-guid>/applications/<app-id>", "data": { "@odata.type": "microsoft.graph.onVerifiedIdClaimValidationCalloutData", "tenantId": "<tenant-guid>", "authenticationContext": { "correlationId": "00000000-0000-0000-0000-000000000001", "user": { "userPrincipalName": "user@contoso.com" } }, "verifiedIdClaimsContext": { "additionalInfo": { "employeeId": "E001" }, "claims": { "firstName": "John", "lastName": "Doe", "dateOfBirth": "1990-01-15" } } } } '@ (Invoke-WebRequest -Method Post ` -Uri "https://<your-function-app>.azurewebsites.net/api/CustomClaimMatching" ` -ContentType "application/json" ` -Headers @{ Authorization = "Bearer test" } ` -Body $body).ContentVerifique a resposta:
Correspondência bem-sucedida:
{ "data": { "@odata.type": "microsoft.graph.onVerifiedIdClaimValidationResponseData", "actions": [ { "@odata.type": "microsoft.graph.verifiedIdClaimValidation.pass" } ] } }Correspondência com falha (retorna quais declarações não corresponderam):
{ "data": { "@odata.type": "microsoft.graph.onVerifiedIdClaimValidationResponseData", "actions": [ { "@odata.type": "microsoft.graph.verifiedIdClaimValidation.failed", "failedClaims": ["dateOfBirth"] } ] } }
Etapa 5: Proteger sua função Azure
As extensões de autenticação personalizadas do Microsoft Entra utilizam o fluxo de servidor a servidor para obter um token de acesso que é enviado no cabeçalho HTTP Authorization para sua Azure Function. Ao publicar sua função em Azure, especialmente em um ambiente de produção, você precisa validar o token enviado no cabeçalho de autorização.
Para proteger sua Azure Function, siga estas etapas para integrar a autenticação do Microsoft Entra para validar os tokens de entrada com o registro do aplicativo da API de eventos de autenticação do Azure Functions.
5.1 Adicionar um provedor de identidade à função Azure
- Entre no portal do Azure.
- Navegue até e selecione o Aplicativo de Funções que você implantou anteriormente.
- Selecione Autenticação no menu à esquerda.
- Selecione Adicionar provedor de identidade.
- Selecione Microsoft como provedor de identidade.
- Em Escolher um locatário, selecione a configuração da Força de Trabalho (locatário atual).
- Em App registration, selecione Escolha um registro de aplicativo existente neste diretório e selecione o registro de aplicativo da API de eventos de autenticação do Azure Functions criado na Etapa 2.
- Na expiração do segredo do cliente, selecione um período de expiração.
- Em tipos de conta com suporte, selecione Locatário atual – locatário único.
- Em verificações adicionais:
-
Requisito de aplicativo cliente: Selecione Permitir solicitações de aplicativos clientes específicos e adicione
99045fe1-7639-4a75-9d4a-577b6ca3810f(este é o ID de aplicativo de primeira parte das extensões de autenticação personalizadas do Microsoft Entra). - Requisito de identidade: Selecione Permitir solicitações de qualquer identidade.
- Requisito de locatário: Selecione Permitir solicitações de locatários específicos e insira sua ID de locatário da força de trabalho.
-
Requisito de aplicativo cliente: Selecione Permitir solicitações de aplicativos clientes específicos e adicione
- Em solicitações não autenticadas, selecione HTTP 401 Não autorizado: recomendado para APIs.
- Para a URL Issuer, insira
https://login.microsoftonline.com/{tenantId}/v2.0, em que{tenantId}é a ID do locatário do Microsoft Entra. - Desmarque a opção Repositório de tokens.
- Selecione Add para adicionar autenticação à função Azure.
5.2 Usar o provedor de identidade do OpenID Connect
Se a função Azure estiver hospedada em um locatário diferente do locatário em que sua extensão de autenticação personalizada está registrada, siga estas etapas:
- Entre no portal Azure e navegue até o Aplicativo de Funções.
- Selecione Autenticação no menu à esquerda.
- Selecione Adicionar provedor de identidade.
- Selecione OpenID Connect como provedor de identidade.
- Forneça um nome, como
Contoso Microsoft Entra ID. - Na entrada Metadata, insira a seguinte URL na URL Document, substituindo
{tenantId}pelo ID do inquilino do Microsoft Entra:https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration - Em App registration, insira a ID do aplicativo (ID do cliente) da API de eventos de autenticação Azure Functions registro de aplicativo criado na Etapa 2.
- No centro de administração do Microsoft Entra, acesse o registro de aplicativo da API de eventos de autenticação do Azure Functions, Certificados e segredos, Segredos do cliente, Novo segredo do cliente. Copie o valor do segredo.
- De volta à função Azure, insira o segredo do Cliente.
- Desmarque a opção Repositório de tokens.
- Selecione Adicionar para adicionar o provedor de identidade do OpenID Connect.
Etapa 6: Testar o fluxo de recuperação de ponta a ponta
Entre no centro de administração do Microsoft Entra e confirme se a extensão de autenticação personalizada está ativa e atribuída ao perfil de verificação de identidade (Etapa 3).
Em uma janela privada do navegador, acesse https://myaccount.microsoft.com e inicie uma recuperação de conta.
Conclua as etapas de revisão de identidade (verificação facial, apresentação de ID verificada).
O evento
OnVerifiedIdClaimValidationé acionado e chama sua função Azure. A função valida as declarações contra a fonte de dados e retorna aprovado ou reprovado.Verifique nosLogs do > se a função foi chamada e se as declarações foram validadas:
traces | where message has "claims" or message has "validation" | order by timestamp desc | take 20
Mudar para produção: use o provedor de API de RH
Para a produção, mude do provedor de Excel para o provedor de API de RH, que faz chamadas para o endpoint REST de RH da sua organização.
Nas variáveis de Ambiente do Aplicativo de Funções, atualize:
Name Value ClaimsValidator__ProviderhrapiHrApi__BaseUrlSua URL base da API de RH (por exemplo, https://hr.contoso.com/api).HrApi__AuthModeapikeyouoauth.HrApi__ApiKeySua chave de API (se estiver usando apikeyo modo de autenticação).HrApi__OAuthScopeEscopo do OAuth (se estiver usando oautho modo de autenticação, por exemplo,api://hr-api-app-id/.default).Ao usar o modo de autenticação
oauth, a função utiliza a identidade gerenciada atribuída pelo sistema do Function App. Conceda à identidade gerenciada a função de aplicativo adequada no registro de aplicativo da API de RH.Sua API de RH deve implementar este contrato:
Solicitação:
POST {BaseUrl}/validate{ "upn": "user@contoso.com", "employeeId": "E001", "claims": { "firstName": "John", "lastName": "Doe", "dateOfBirth": "1990-01-15" } }Resposta (passagem):
{ "result": "pass" }Resposta (falha):
{ "result": "fail", "failedClaims": ["dateOfBirth"] }
Troubleshoot
| Sintoma | Cause | Resolução |
|---|---|---|
A função retorna 401 |
Falha na validação do token de portador ou o provedor de identidade não está configurado. | Verifique se o provedor de identidade foi adicionado à Autenticação do Aplicativo de Funções (Etapa 5) e se a ID do cliente corresponde ao registro do aplicativo. |
A função retorna 200 , mas o fluxo de recuperação falha |
Incompatibilidade de esquema de resposta. | Verifique se a função retorna os valores corretos @odata.type na resposta. |
| Declarações sempre falham na validação | A fonte de dados não corresponde. | Verifique se os cabeçalhos da coluna Excel ou a resposta à API de RH correspondem exatamente às chaves de declaração (não diferencia maiúsculas de minúsculas). |
| Função não chamada durante a recuperação | Ouvinte de eventos não configurado. | Confirme se a extensão de autenticação personalizada está atribuída à política de recuperação de conta (Etapa 3). |
| Os dados do Excel não estão carregando | Url de compartilhamento inválida ou expirada. | Compartilhe novamente o arquivo Excel e atualize Excel__ShareUrl em variáveis de ambiente. |
| Consentimento do administrador não concedido | Erro de permissão na chamada de extensão. | Vá para a extensão de autenticação personalizada >Visão Geral>Conceder permissão>Aceitar. |
Para obter mais diretrizes de solução de problemas, consulte Solucionar problemas da API de extensões de autenticação personalizadas.