Configurar um provedor de declarações personalizado para um evento de emissão de token
Este artigo descreve como configurar um provedor de declarações personalizado para um evento de início de emissão de token. Usando uma API REST do Azure Functions existente, você registrará uma extensão de autenticação personalizada e adicionará atributos que espera que ela analise a partir da sua API REST. Para testar a extensão de autenticação personalizada, você registrará um aplicativo OpenID Connect de exemplo para obter um token e visualizar as declarações.
Pré-requisitos
- Uma assinatura do Azure com a capacidade de criar o Azure Functions. Se você não tiver uma conta existente do Azure, inscreva-se para uma avaliação gratuita ou use os benefícios da Assinatura do Visual Studio ao criar uma conta.
- Uma função de gatilho HTTP configurada para um evento de emissão de token implantado no Azure Functions. Se você não tiver um, siga as etapas em Criar uma API REST para um evento de início de emissão de token no Azure Functions.
- Uma compreensão básica dos conceitos abordados em Visão geral das extensões de autenticação personalizadas.
- Um locatário do Microsoft Entra ID. Você pode usar um cliente ou locatário da força de trabalho para este guia de instruções.
- Para locatários externos, use um fluxo de usuário de inscrição e entrada.
Etapa 1: Registrar uma extensão de autenticação personalizada
Agora você configurará uma extensão de autenticação personalizada, que será usada pelo Microsoft Entra ID para chamar sua função do Azure. A extensão de autenticação personalizada contém informações sobre seu ponto de extremidade da API REST, as declarações que ele analisa da API REST e como autenticar na API REST. Siga estas etapas para registrar uma extensão de autenticação personalizada em seu aplicativo Azure Function.
Nota
Você pode ter um máximo de 100 políticas de extensão personalizadas.
Registrar uma extensão de autenticação personalizada
- Entre no portal do Azure como pelo menos um Administrador de Aplicativo e Administrador de Autenticação.
- Procure e selecione Microsoft Entra ID e selecione Aplicações empresariais.
- Selecione Extensões de autenticação personalizadas e, em seguida, selecione Criar uma extensão personalizada.
- Em Noções básicas, selecione o tipo de evento TokenIssuanceStart e selecione Avançar.
- Em Configuração do ponto final, preencha as seguintes propriedades:
- Nome - Um nome para sua extensão de autenticação personalizada. Por exemplo, evento de emissão de token.
- URL de destino - A
{Function_Url}
URL da sua função do Azure. Navegue até a página Visão geral do seu aplicativo Azure Function e selecione a função que você criou. Na página Visão geral da função, selecione Obter URL da função e use o ícone de cópia para copiar o URL customauthenticationextension_extension (chave do sistema). - Descrição - Uma descrição para suas extensões de autenticação personalizadas.
- Selecione Seguinte.
- Em 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ção.
- Dê um nome ao aplicativo, por exemplo , API de eventos de autenticação do Azure Functions.
- Selecione Seguinte.
- Em Declarações, insira os atributos que você espera que sua extensão de autenticação personalizada analise da sua API REST e serão mesclados no token. Adicione as seguintes declarações:
- datadenascimento
- customRoles
- apiVersion
- correlationId
- Selecione Avançar e, em seguida , Criar, que registra a extensão de autenticação personalizada e o registro do aplicativo associado.
- Observe a ID do Aplicativo em Autenticação de API, que é necessária para configurar a autenticação para sua Função do Azure em seu aplicativo do Azure Function.
1.2 Conceder consentimento de administrador
Depois que a extensão de autenticação personalizada for criada, você precisará conceder permissões à API. A extensão de autenticação personalizada usa client_credentials
para autenticar no Aplicativo de Função do Azure usando a Receive custom authentication extension HTTP requests
permissão.
Abra a página Visão geral da sua nova extensão de autenticação personalizada. Anote o ID do aplicativo em Autenticação de API, pois ele será necessário ao adicionar um provedor de identidade.
Em Autenticação de API, selecione Conceder permissão.
Uma nova janela é aberta e, uma vez conectado, ele solicita permissões para receber solicitações HTTP de extensão de autenticação personalizada. Isso permite que a extensão de autenticação personalizada se autentique em sua API. Selecione Aceitar.
Etapa 2: Configurar um aplicativo OpenID Connect para receber tokens enriquecidos
Para obter um token e testar a extensão de autenticação personalizada, você pode usar o https://jwt.ms aplicativo. É um aplicativo Web de propriedade da Microsoft que exibe o conteúdo decodificado de um token (o conteúdo do token nunca sai do seu navegador).
2.1 Registar uma aplicação Web de teste
Siga estas etapas para registrar o aplicativo Web jwt.ms :
Na página inicial do portal do Azure, selecione Microsoft Entra ID.
Selecione Registos de>aplicações Novo registo.
Insira um Nome para o aplicativo. Por exemplo, Meu aplicativo de teste.
Em Tipos de conta suportados, selecione Contas somente neste diretório organizacional.
Na lista suspensa Selecione uma plataforma no URI de redirecionamento, selecione Web e digite
https://jwt.ms
a caixa de texto URL.Selecione Registrar para concluir o registro do aplicativo.
Na página Visão geral do registro do aplicativo, copie a ID do aplicativo (cliente). O ID do aplicativo é chamado de
{App_to_enrich_ID}
nas etapas posteriores. No Microsoft Graph, ele é referenciado pela propriedade appId .
2.2 Ativar fluxo implícito
O aplicativo de teste jwt.ms usa o fluxo implícito. Habilite o fluxo implícito no registro do aplicativo My Test:
- Em Gerir, selecione Autenticação.
- Em Concessão implícita e fluxos híbridos, marque a caixa de seleção Tokens de ID (usados para fluxos implícitos e híbridos).
- Selecione Guardar.
2.3 Habilitar seu aplicativo para uma política de mapeamento de declarações
Uma política de mapeamento de declarações é usada para selecionar quais atributos retornados da extensão de autenticação personalizada são mapeados no token. Para permitir que os tokens sejam aumentados, você deve habilitar explicitamente o registro do aplicativo para aceitar declarações mapeadas:
- No registro do aplicativo Meu teste, em Gerenciar, selecione Manifesto.
- No manifesto, localize o
acceptMappedClaims
atributo e defina o valor comotrue
. - Defina
accessTokenAcceptedVersion
como2
. - Selecione Guardar para guardar as alterações.
O trecho JSON a seguir demonstra como configurar essas propriedades.
{
"id": "22222222-0000-0000-0000-000000000000",
"acceptMappedClaims": true,
"accessTokenAcceptedVersion": 2,
...
}
Aviso
Não defina acceptMappedClaims
a propriedade como true
para aplicativos multilocatário, o que pode permitir que atores mal-intencionados criem políticas de mapeamento de declarações para seu aplicativo. Em vez disso, configure uma chave de assinatura personalizada.
Continue para a próxima etapa, Atribuir um provedor de declarações personalizado ao seu aplicativo.
Etapa 3: atribuir um provedor de declarações personalizado ao seu aplicativo
Para que os tokens sejam emitidos com declarações recebidas da extensão de autenticação personalizada, você deve atribuir um provedor de declarações personalizado ao seu aplicativo. Isso se baseia no público do token, portanto, o provedor deve ser atribuído ao aplicativo cliente para receber declarações em um token de ID e ao aplicativo de recurso para receber declarações em um token de acesso. O provedor de declarações personalizadas depende da extensão de autenticação personalizada configurada com o ouvinte de eventos de início de emissão de token. Você pode escolher se todas, ou um subconjunto de declarações, do provedor de declarações personalizadas são mapeadas no token.
Nota
Você só pode criar 250 atribuições exclusivas entre aplicativos e extensões personalizadas. Se você deseja aplicar a mesma chamada de extensão personalizada a vários aplicativos, recomendamos usar authenticationEventListeners Microsoft Graph API para criar ouvintes para vários aplicativos. Isso não é suportado no portal do Azure.
Siga estas etapas para conectar o aplicativo My Test com sua extensão de autenticação personalizada:
Para atribuir a extensão de autenticação personalizada como uma fonte de provedor de declarações personalizada;
Na página inicial do portal do Azure, selecione Microsoft Entra ID.
SelecioneAplicativos corporativos e, em Gerenciar, selecione Todos os aplicativos. Localize e selecione Meu aplicativo de teste na lista.
Na página Visão geral do aplicativo Meu teste, navegue até Gerenciar e selecione Logon único.
Em Atributos & Declarações, selecione Editar.
Expanda o menu Configurações avançadas .
Ao lado de Provedor de declarações personalizado, selecione Configurar.
Expanda a caixa suspensa Provedor de declarações personalizado e selecione o evento de emissão de token criado anteriormente.
Selecione Guardar.
Em seguida, atribua os atributos do provedor de declarações personalizadas, que devem ser emitidos no token como declarações:
Selecione Adicionar nova declaração para adicionar uma nova declaração. Forneça um nome para a declaração que você deseja emitir, por exemplo , dateOfBirth.
Em Source, selecione Attribute e escolha customClaimsProvider.dateOfBirth na caixa suspensa Source attribute .
Selecione Guardar.
Repita esse processo para adicionar os atributos customClaimsProvider.customRoles, customClaimsProvider.apiVersion e customClaimsProvider.correlationId e o nome correspondente. É uma boa ideia fazer corresponder o nome da declaração ao nome do atributo.
Etapa 4: Proteger sua função do Azure
A extensão de autenticação personalizada do Microsoft Entra usa o fluxo de servidor para servidor para obter um token de acesso que é enviado no cabeçalho HTTP Authorization
para sua função do Azure. Ao publicar sua função no Azure, especialmente em um ambiente de produção, você precisa validar o token enviado no cabeçalho de autorização.
Para proteger sua função do Azure, siga estas etapas para integrar a autenticação do Microsoft Entra, para validar tokens de entrada com seu registro de aplicativo de API de eventos de autenticação do Azure Functions. Escolha uma das seguintes guias com base no seu tipo de locatário.
Nota
Se o aplicativo de função do Azure estiver hospedado em um locatário do Azure diferente do locatário no qual sua extensão de autenticação personalizada está registrada, escolha a guia Open ID Connect .
4.1 Usando o provedor de identidade Microsoft Entra
Use as etapas a seguir para adicionar o Microsoft Entra como um provedor de identidade ao seu aplicativo Azure Function.
No portal do Azure, localize e selecione o aplicativo de função que você publicou anteriormente.
Em Configurações, selecione Autenticação.
Selecione Adicionar provedor de identidade.
Selecione Microsoft como o provedor de identidade.
Selecione Força de trabalho como o tipo de locatário.
Em Registro de aplicativo, selecione Escolher um registro de aplicativo existente neste diretório para o tipo de registro de aplicativo e escolha o registro de aplicativo de API de eventos de autenticação do Azure Functions que você criou anteriormente ao registrar o provedor de declarações personalizado.
Insira o seguinte URL do emissor,
https://login.microsoftonline.com/{tenantId}/v2.0
, onde{tenantId}
é o ID do locatário do seu locatário da força de trabalho.Em Requisito de aplicativo cliente, selecione Permitir solicitações de aplicativos cliente específicos e insira
99045fe1-7639-4a75-9d4a-577b6ca3810f
.Em Requisito de locatário, selecione Permitir solicitações de locatários específicos e insira o ID do locatário da força de trabalho.
Em Solicitações não autenticadas, selecione HTTP 401 Não autorizado como o provedor de identidade.
Desmarque a opção Loja de tokens.
Selecione Adicionar para adicionar autenticação à sua Função do Azure.
4.2 Usando o provedor de identidade OpenID Connect
Se você configurou o provedor de identidade da Microsoft, ignore esta etapa. Caso contrário, se a Função do Azure estiver hospedada em um locatário diferente do locatário no qual sua extensão de autenticação personalizada está registrada, siga estas etapas para proteger sua função:
Criar um segredo do cliente
- Na página inicial do portal do Azure, selecione Registros do aplicativo Microsoft Entra ID>.
- Selecione o registro do aplicativo de API de eventos de autenticação do Azure Functions que você criou anteriormente.
- Selecione Certificados & segredos Segredos do>cliente Novo segredo do>cliente.
- Selecione uma expiração para o segredo ou especifique um tempo de vida personalizado, adicione uma descrição e selecione Adicionar.
- Registre o valor do segredo para uso no código do aplicativo cliente. Este valor secreto nunca mais é apresentado depois de sair desta página.
Adicione o provedor de identidade OpenID Connect ao seu aplicativo Azure Function.
Encontre e selecione o aplicativo de função que você publicou anteriormente.
Em Configurações, selecione Autenticação.
Selecione Adicionar provedor de identidade.
Selecione OpenID Connect como o provedor de identidade.
Forneça um nome, como Contoso Microsoft Entra ID.
Na entrada Metadados, insira a seguinte URL para a URL do documento. Substitua o pelo seu ID de locatário do
{tenantId}
Microsoft Entra.https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
No Registro do aplicativo, insira a ID do aplicativo (ID do cliente) dos eventos de autenticação do Azure Functions Registro do aplicativo da API que você criou anteriormente.
Retorne à Função do Azure, sob o registro do aplicativo, insira o segredo do cliente.
Desmarque a opção Loja de tokens.
Selecione Adicionar para adicionar o provedor de identidade OpenID Connect.
Etapa 5: Testar o aplicativo
Para testar seu provedor de declarações personalizado, siga estas etapas:
Abra um novo navegador privado e navegue e inicie sessão através do seguinte URL.
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize?client_id={App_to_enrich_ID}&response_type=id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
Substitua
{tenantId}
pelo seu ID de inquilino, nome de inquilino ou um dos seus nomes de domínio verificados. Por exemplo,contoso.onmicrosoft.com
.Substitua
{App_to_enrich_ID}
pelo ID do cliente do aplicativo My Test.Depois de iniciar sessão, ser-lhe-á apresentado o seu token descodificado em
https://jwt.ms
. Valide se as declarações da Função do Azure são apresentadas no token decodificado, por exemplo,dateOfBirth
.