Compartilhar via


Acessar a API Pública do Azure Sphere com a entidade de serviço de aplicativo do AAD

Importante

Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).

As ferramentas automatizadas exigem acesso restrito e autenticação não interativa em vez de autenticar como um usuário totalmente privilegiado. Isso pode ser feito usando entidades de serviço que permitem que os aplicativos entrem com permissões específicas. Simplificando, uma entidade de serviço do Azure funciona como uma identidade que é criada no Azure quando um aplicativo é registrado no Azure Active Directory.

Nesse modo, a permissão de acesso para o aplicativo no locatário do Azure Active Directory (AAD) é definida pela entidade de serviço, que habilita a autenticação e a autorização ao acessar recursos.

Há dois tipos de métodos de autenticação disponíveis para entidades de serviço, certificados de cliente e segredos de cliente.

Pré-requisitos

Etapa 1: Registrar uma entidade de serviço

  1. No portal do Azure, no painel de navegação esquerdo, clique em Azure Active Directory.
  2. Registre um aplicativo no Azure AD e crie uma entidade de serviço. Observe a ID do cliente.
  3. Selecione o tipo de autenticação. Há dois tipos de autenticação disponíveis para entidades de serviço:
    • Segredo do cliente
    • Certificado do cliente

Etapa 2: Adicionar a entidade de serviço ao locatário do Azure Sphere e atribuir uma função

Observação

Certifique-se de ter o seguinte antes de iniciar esta etapa:

O Azure Sphere trata a entidade de serviço como outro usuário. Para adquirir um token usando a entidade de serviço, primeiro adicione o usuário da entidade de serviço ao locatário do Azure Sphere e, em seguida, atribua uma função ao usuário em um locatário do Azure Sphere usando a CLI do Azure Sphere.

A identidade do usuário pode ser gerada como <ObjectID>@<TenantID.onmicrosoft.com>.

No exemplo a seguir, criamos um usuário usando uma combinação de ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx de objeto e ID zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz de locatário do Azure AD na ID tttttttt-tttt-tttt-tttt-ttttttttttttde locatário do Azure Sphere e, em seguida, adicionamos a função Colaborador para esse usuário.

  1. Entre com seu logon do Azure Sphere usando a CLI do Azure Sphere:

    azsphere login
    
  2. Selecione o locatário necessário:

    azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
    
  3. Para adicionar o usuário a uma função necessária:

    azsphere role add --role Contributor --user xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
    

Etapa 3: Registrar segredos do cliente ou certificados do cliente usando o portal de registro do aplicativo

Os segredos do cliente e os certificados do cliente permitem que os aplicativos se identifiquem para o serviço de autenticação ao receber tokens em um local endereçável da Web (usando um esquema HTTPS). Recomendamos usar um certificado em vez de um segredo do cliente para cenários de credencial do cliente ao autenticar com o Azure Active Directory.

O segredo do cliente ou o certificado do cliente para o registro do aplicativo pode ser usado para obter um token de acesso para a API Pública do Azure Sphere (PAPI).

Configurar o aplicativo com o segredo do cliente

Para registrar seu aplicativo com um segredo do cliente:

  1. No Portal do Azure, no painel de navegação esquerdo, clique em Azure Active Directory.

  2. Vá para Registros de aplicativo e selecione o aplicativo que você criou na Etapa 1: Registrar uma entidade de serviço.

  3. No painel esquerdo, selecione a seção> Certificados e segredos> Segredos do cliente Novo segredo do cliente.

  4. Insira uma descrição, selecione a duração da validade e selecione Adicionar. O segredo do cliente é gerado e o valor do segredo do cliente é exibido.

  5. Copie o valor do segredo do cliente porque você não poderá recuperar a chave mais tarde.

  6. Forneça o valor do segredo do cliente com a ID do aplicativo da API pública do Azure Sphere para entrar como o aplicativo. Armazene o valor da chave onde seu aplicativo possa recuperá-lo.

    Importante

    O valor do segredo do cliente é uma credencial de segurança importante. Não compartilhe o segredo do cliente com ninguém nem distribua-o em um aplicativo cliente. É recomendável usar o serviço Azure Key Vault que fornece gerenciamento centralizado de segredos, com controle total sobre as políticas de acesso e o histórico de auditoria.

Use o seguinte código de exemplo:

 IConfidentialClientApplication app =

 ConfidentialClientApplicationBuilder.Create("<<App registration Client ID>>")

                 .WithClientSecret("<<App registration Client Secret Value>>")

                 .WithAuthority(AzureCloudInstance.AzurePublic, "<<3rd Party Tenant Id>>")

                 .Build();

 string[] scopes = new[] { "https://firstparty.sphere.azure.net/api/.default" };

 AuthenticationResult result =  await app.AcquireTokenForClient(scopes).ExecuteAsync();
 string accessToken=result.AccessToken;

Configurar aplicativo com certificado de cliente

Para configurar o certificado do cliente:

  1. No Portal do Azure, no painel de navegação esquerdo, clique em Azure Active Directory.
  2. Vá para Registros de aplicativo e selecione o aplicativo que você criou na Etapa 1: Registrar uma entidade de serviço.
  3. No painel esquerdo, selecione Certificados e segredos>Certificados>Carregar certificado. Selecione o certificado (um certificado existente ou o certificado autoassinado que você exportou).
  4. Depois de registrar o certificado com seu aplicativo no portal de registro de aplicativos, habilite o código do aplicativo cliente para usar o certificado.

Para registrar seu aplicativo com um certificado de cliente, use o seguinte código de exemplo:

 IConfidentialClientApplication app =

 ConfidentialClientApplicationBuilder.Create("<<App registration Client ID>>")

                 .WithCertificate("<<App registration Certificate>>")

                 .WithAuthority(AzureCloudInstance.AzurePublic, "<<3rd Party Tenant Id>>")

                 .Build();

 string[] scopes = new[] { "https://firstparty.sphere.azure.net/api/.default" };

 AuthenticationResult result =  await app.AcquireTokenForClient(scopes).ExecuteAsync();
 string accessToken=result.AccessToken;

Observação

Você precisará adicionar MSAL.Net biblioteca para usar IConfidentialClient.