Share via


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

Ferramentas automatizadas exigem acesso restrito e autenticação não interativa em vez de autenticação como um usuário totalmente privilegiado. Isso pode ser obtido 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 permite autenticação e 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 do 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 com Azure AD e crie uma entidade de serviço. Observe a ID do cliente.
  3. Selecione 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

Nota

Verifique se você tem 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 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 Azure AD ID zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz do locatário na ID tttttttt-tttt-tttt-tttt-ttttttttttttdo locatário do Azure Sphere e, em seguida, adicionamos a função Colaborador para esse usuário.

  1. Entre com o 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 criar um usuário da entidade de serviço para o locatário do Azure Sphere:

    azsphere register-user --new-user  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
    
  4. 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 de cliente usando o portal de registro do aplicativo

Segredos do cliente e certificados de cliente permitem que os aplicativos se identifiquem no 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 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. Acesse Registros de aplicativo e selecione o aplicativo criado na Etapa 1: Registrar uma entidade de serviço.

  3. No painel esquerdo, selecione Certificados & segredos> segredos do cliente seção >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 segredo do cliente é exibido.

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

  6. Forneça o valor de segredo do cliente com a ID do Aplicativo de API Pública do Azure Sphere para entrar como o aplicativo. Armazene o valor da chave em que seu aplicativo pode 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 ou distribua-o em um aplicativo cliente. Recomendamos usar o serviço Key Vault do Azure que fornece gerenciamento de segredos centralizado, com controle total sobre políticas de acesso e 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. Acesse Registros de aplicativo e selecione o aplicativo criado na Etapa 1: Registrar uma entidade de serviço.
  3. No painel esquerdo, selecione Certificados & 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 do aplicativo, 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;

Nota

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