Configurar o fluxo de credenciais do cliente OAuth 2.0 no Azure Ative Directory B2C
Antes de começar, use o seletor Escolha um tipo de política para escolher o tipo de política que você está configurando. O Azure Ative Directory B2C oferece dois métodos para definir como os usuários interagem com seus aplicativos: por meio de fluxos de usuário predefinidos ou por meio de políticas personalizadas totalmente configuráveis. As etapas exigidas neste artigo são diferentes para cada método.
O fluxo de concessão de credenciais do cliente OAuth 2.0 permite que um aplicativo (cliente confidencial) use suas próprias credenciais, em vez de representar um usuário, para autenticar ao chamar um recurso da Web, como a API REST. Este tipo de concessão é comumente utilizado para interações de servidor para servidor que têm de ser executadas em segundo plano, sem interação imediata com um utilizador. Estes tipos de aplicações são frequentemente denominados daemons ou conta de serviço.
No fluxo de credenciais do cliente, as permissões são concedidas diretamente ao próprio aplicativo por um administrador. Quando o aplicativo apresenta um token a um recurso, o recurso impõe que o próprio aplicativo tenha autorização para executar uma ação, já que não há nenhum usuário envolvido na autenticação. Este artigo aborda as etapas necessárias para autorizar um aplicativo a chamar uma API e como obter os tokens necessários para chamar essa API.
Este recurso está em pré-visualização pública.
Visão geral do registro do aplicativo
Para permitir que seu aplicativo entre com credenciais de cliente e, em seguida, chame uma API Web, registre dois aplicativos no diretório B2C do Azure AD.
O registro do aplicativo permite que seu aplicativo entre com o Azure AD B2C. O processo de registro do aplicativo gera uma ID do aplicativo, também conhecida como ID do cliente, que identifica exclusivamente seu aplicativo. Você também cria um segredo do cliente, que seu aplicativo usa para adquirir os tokens com segurança.
O registro da API da Web permite que seu aplicativo chame uma API da Web segura. O registro inclui os escopos da API da Web. Os escopos fornecem uma maneira de gerenciar permissões para recursos protegidos, como sua API da Web. Em seguida, você concede permissões ao aplicativo para os escopos da API da Web. Quando um token de acesso é solicitado, seu aplicativo especifica o
.default
parâmetro de escopo da solicitação. O Azure AD B2C retorna os escopos da API Web concedidos ao seu aplicativo.
A arquitetura e os registros do aplicativo são ilustrados no diagrama a seguir:
Etapa 1: Registrar o aplicativo de API da Web
Nesta etapa, você registra a API da Web (App 2) com seus escopos. Mais tarde, você concede sua permissão de aplicativo (Aplicativo 1) para esses escopos. Se você já tiver esse registro de aplicativo, ignore esta etapa e passe para a próxima, Etapa 1.1 Definir funções (escopos) da API da Web.
Para criar o registro do aplicativo de API da Web (ID do aplicativo: 2), siga estas etapas:
Inicie sessão no portal do Azure.
Verifique se você está usando o diretório que contém seu locatário do Azure AD B2C. Selecione o ícone Diretórios + assinaturas na barra de ferramentas do portal.
Nas configurações do Portal | Página Diretórios + assinaturas , localize seu diretório do Azure AD B2C na lista Nome do diretório e selecione Alternar.
No portal do Azure, procure e selecione Azure AD B2C.
Selecione Registos de aplicações e, em seguida, selecione Novo registo.
Em Name, insira um nome para o aplicativo (por exemplo, my-api1). Deixe os valores padrão para URI de redirecionamento e tipos de conta suportados.
Selecione Registar.
Depois que o registro do aplicativo for concluído, selecione Visão geral.
Registre o valor da ID do aplicativo (cliente) para uso posterior ao configurar o aplicativo Web.
Etapa 1.1 Definir funções de API da Web (escopos)
Nesta etapa, você configura o URI de ID do Aplicativo da API da Web e, em seguida, define as funções do Aplicativo. As funções do aplicativo, usadas pelos escopos do OAuth 2.0 e definidas em um registro de aplicativo que representa sua API. Seu aplicativo usa o URI da ID do aplicativo com o .default
escopo. Para definir funções de aplicativo, siga estas etapas:
Selecione a API da Web que você criou, por exemplo , my-api1.
Em Gerenciar, selecione Expor uma API.
Ao lado de URI da ID do aplicativo, selecione o link Definir. Substitua o valor padrão (GUID) por um nome exclusivo (por exemplo, api) e selecione Salvar.
Copie o URI da ID do aplicativo. A captura de tela a seguir mostra como copiar o URI da ID do aplicativo.
Em Gerenciar, selecione Manifesto para abrir o editor de manifesto do aplicativo. No editor, localize a configuração e defina as
appRoles
funções do aplicativo destinadasapplications
ao . Cada definição de função de aplicativo deve ter um identificador exclusivo global (GUID) para seuid
valor. Gere um novo GUID executandonew-guid
o comando no Microsoft PowerShell ou um gerador de GUID online. Avalue
propriedade de cada definição de função de aplicativo aparece no escopo, ascp
declaração. Avalue
propriedade não pode conter espaços. O exemplo a seguir demonstra duas funções de aplicativo, leitura e gravação:"appRoles": [ { "allowedMemberTypes": ["Application"], "displayName": "Read", "id": "d6a15e20-f83c-4264-8e61-5082688e14c8", "isEnabled": true, "description": "Readers have the ability to read tasks.", "value": "app.read" }, { "allowedMemberTypes": ["Application"], "displayName": "Write", "id": "204dc4ab-51e1-439f-8c7f-31a1ebf3c7b9", "isEnabled": true, "description": "Writers have the ability to create tasks.", "value": "app.write" }],
Na parte superior da página, selecione Salvar para salvar as alterações de manifesto.
Passo 2: Registar uma candidatura
Para permitir que seu aplicativo entre com o Azure AD B2C usando o fluxo de credenciais do cliente, você pode usar um aplicativo existente ou registrar um novo (Aplicativo 1).
Se estiver a utilizar uma aplicação existente, certifique-se de accessTokenAcceptedVersion
que a aplicação está definida como 2
:
- No portal do Azure, procure e selecione Azure AD B2C.
- Selecione Registos de aplicações e, em seguida, selecione a sua aplicação existente na lista.
- No menu à esquerda, em Gerenciar, selecione Manifesto para abrir o editor de manifesto.
- Localize o
accessTokenAcceptedVersion
elemento e defina seu valor como2
. - Na parte superior da página, selecione Salvar para salvar as alterações.
Para criar um novo registo de aplicação Web, siga estes passos:
No portal do Azure, procure e selecione Azure AD B2C
Selecione Registos de aplicações e, em seguida, selecione Novo registo.
Insira um Nome para o aplicativo. Por exemplo, ClientCredentials_app.
Deixe os outros valores como estão e selecione Registrar.
Registre o ID do aplicativo (cliente) para uso em uma etapa posterior.
Etapa 2.1 Criar um segredo do cliente
Crie um segredo de cliente para o aplicativo registrado. Seu aplicativo usa o segredo do cliente para provar sua identidade quando solicita tokens.
Em Gerenciar, selecione Segredos de certificados&.
Selecione Novo segredo do cliente.
Na caixa Descrição, insira uma descrição para o segredo do cliente (por exemplo, clientsecret1).
Em Expira, selecione uma duração para a qual o segredo é válido e, em seguida, selecione Adicionar.
Registre o valor do segredo. Use esse valor para configuração em uma etapa posterior.
Etapa 2.2 Conceder permissões ao aplicativo para a API da Web
Para conceder permissões à sua aplicação (Aplicação 1), siga estes passos:
Selecione Registos de aplicações e, em seguida, selecione a aplicação que criou (Aplicação 1).
Em Gerenciar, selecione Permissões de API.
Em Permissões configuradas, selecione Adicionar uma permissão.
Selecione a guia Minhas APIs .
Selecione a API (App 2) à qual o aplicativo Web deve ter acesso. Por exemplo, digite my-api1.
Selecione Permissão do aplicativo.
Em Permissão, expanda aplicativo e selecione os escopos definidos anteriormente (por exemplo, app.read e app.write).
Selecione Adicionar permissões.
Selecione Conceder consentimento de administrador para <o nome> do seu inquilino.
Selecione Yes (Sim).
Selecione Atualizar e verifique se Concedido para ... aparece em Status para ambos os escopos.
Etapa 3: Obter um token de acesso
Não há ações específicas para habilitar as credenciais do cliente para fluxos de usuário ou políticas personalizadas. Os fluxos de usuário do Azure AD B2C e as políticas personalizadas dão suporte ao fluxo de credenciais do cliente. Se ainda não tiver feito isso, crie um fluxo de usuário ou uma política personalizada. Em seguida, use seu aplicativo favorito de desenvolvimento de API para gerar uma solicitação de autorização. Construa uma chamada como este exemplo com as seguintes informações como o corpo da solicitação POST:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token
- Substitua
<tenant-name>
pelo nome do seu locatário do Azure AD B2C. Por exemplo,contoso.b2clogin.com
. - Substitua
<policy>
pelo nome completo do seu fluxo de usuário ou política personalizada. Observe que todos os tipos de fluxos de usuário e políticas personalizadas oferecem suporte ao fluxo de credenciais do cliente. Você pode usar qualquer fluxo de usuário ou política personalizada que tiver ou criar uma nova, como inscrição ou entrada.
Key | valor |
---|---|
grant_type | client_credentials |
client_id | A ID do Cliente da Etapa 2: Registrar um aplicativo. |
client_secret | O valor do segredo do cliente da Etapa 2.1 Criar um segredo do cliente. |
âmbito | O URI da ID do Aplicativo da Etapa 1.1 Definir funções da API da Web (escopos) e .default . Por exemplo https://contoso.onmicrosoft.com/api/.default , ou https://contoso.onmicrosoft.com/12345678-0000-0000-0000-000000000000/.default . |
A solicitação POST real se parece com o exemplo a seguir:
Pedido:
POST /<tenant-name>.onmicrosoft.com/B2C_1A_SUSI/oauth2/v2.0/token HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=33333333-0000-0000-0000-000000000000
&client_secret=FyX7Q~DuPJ...
&scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2F.default
Resposta:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5OZDlnUkNWWUc2dUs...",
"token_type": "Bearer",
"not_before": 1645172292,
"expires_in": 3600,
"expires_on": 1645175892,
"resource": "33333333-0000-0000-0000-000000000000"
}
Saiba mais sobre as declarações de token de acesso de retorno. A tabela a seguir lista as declarações relacionadas ao fluxo de credenciais do cliente.
Afirmação | Description | Valor |
---|---|---|
aud |
Identifica o destinatário pretendido do token. | A ID do cliente da API. |
sub |
A entidade de serviço associa-se ao aplicativo que iniciou a solicitação. | É o principal de serviço do client_id pedido de autorização. |
azp |
Parte autorizada - a parte para a qual o token de acesso foi emitido. | A ID do cliente do aplicativo que iniciou a solicitação. É o mesmo valor especificado no client_id da solicitação de autorização. |
scp |
O conjunto de escopos expostos pela API do aplicativo (delimitador de espaço). | No fluxo de credenciais do cliente, a solicitação de autorização solicita o escopo, enquanto o .default token contém a lista de escopos expostos (e consentidos pelo administrador do aplicativo) pela API. Por exemplo, app.read app.write . |
Etapa 3.1 Obter um token de acesso com script
Use o seguinte script do PowerShell para testar sua configuração:
$appId = "<client ID>"
$secret = "<client secret>"
$endpoint = "https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token"
$scope = "<Your API id uri>/.default"
$body = "grant_type=client_credentials&scope=" + $scope + "&client_id=" + $appId + "&client_secret=" + $secret
$token = Invoke-RestMethod -Method Post -Uri $endpoint -Body $body
Use o seguinte script cURL para testar sua configuração:
curl --location --request POST 'https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/<policy>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'grant_type="client_credentials"' \
--form 'client_id="<client ID>"' \
--form 'client_secret="<client secret>"' \
--form 'scope="<Your API id uri>/.default"'
Etapa 4: Personalizar o token
Este recurso está disponível apenas para políticas personalizadas. Para as etapas de configuração, selecione Política personalizada no seletor anterior.
As políticas personalizadas fornecem uma maneira de estender o processo de emissão de tokens. Para personalizar a jornada do usuário das credenciais do cliente OAuth 2.0, siga as orientações sobre como configurar uma jornada do usuário de credenciais do cliente. Em seguida, no JwtIssuer
perfil técnico, adicione os ClientCredentialsUserJourneyId
metadados com uma referência à jornada do usuário que você criou.
O exemplo a seguir mostra como adicionar o ClientCredentialsUserJourneyId
ao perfil técnico do emissor do token.
<TechnicalProfile Id="JwtIssuer">
<Metadata>
<Item Key="ClientCredentialsUserJourneyId">ClientCredentialsJourney</Item>
</Metadata>
</TechnicalProfile>
O exemplo a seguir mostra uma jornada de usuário de credenciais de cliente. São necessários o primeiro e o último passo de orquestração.
<UserJourneys>
<UserJourney Id="ClientCredentialsJourney">
<OrchestrationSteps>
<!-- [Required] Do the client credentials -->
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="ClientCredSetupExchange" TechnicalProfileReferenceId="ClientCredentials_Setup" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- [Optional] Call a REST API or claims transformation -->
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="TokenAugmentation" TechnicalProfileReferenceId="TokenAugmentation" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- [Required] Issue the access token -->
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
</UserJourneys>
Próximos passos
Saiba como configurar um fluxo de credenciais de senha do proprietário do recurso no Azure AD B2C