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
- Locatário do Azure Active Directory (domínio locatário).
- Locatário do Azure Sphere.
- O segredo do cliente da entidade de serviço ou o certificado X509 usado para criar a entidade de serviço no formato PEM.
- Adicione a ID do Aplicativo de API Pública do Azure Sphere ao locatário do Azure.
Etapa 1: registrar uma entidade de serviço
- No portal do Azure, no painel de navegação esquerdo, clique em Azure Active Directory.
- Registre um aplicativo com Azure AD e crie uma entidade de serviço. Observe a ID do cliente.
- 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:
- Locatário do Azure Sphere: execute o comando **azsphere tenant show-selected** usando a CLI do Azure Sphere
- ID do Locatário do Azure: localize a ID do locatário por meio do portal do Azure. Copie a ID do locatário do Azure Active Directory.
- Localize a ID exclusiva do objeto da entidade de serviço associado a este aplicativo:
- Acesse Registros de aplicativo e selecione o aplicativo criado na Etapa 1: Registrar uma entidade de serviço.
- Em Aplicativo gerenciado no diretório local, selecione o link com o nome do aplicativo. O rótulo dessa seleção pode ser truncado.
- Na página Propriedades , copie a ID do Objeto.
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-tttttttttttt
do locatário do Azure Sphere e, em seguida, adicionamos a função Colaborador para esse usuário.
Entre com o logon do Azure Sphere usando a CLI do Azure Sphere:
azsphere login
Selecione o locatário necessário:
azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
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
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:
No portal do Azure, no painel de navegação esquerdo, clique em Azure Active Directory.
Acesse Registros de aplicativo e selecione o aplicativo criado na Etapa 1: Registrar uma entidade de serviço.
No painel esquerdo, selecione Certificados & segredos> segredos do cliente seção >Novo segredo do cliente.
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.
Copie o valor de segredo do cliente porque você não poderá recuperar a chave mais tarde.
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:
- No portal do Azure, no painel de navegação esquerdo, clique em Azure Active Directory.
- Acesse Registros de aplicativo e selecione o aplicativo criado na Etapa 1: Registrar uma entidade de serviço.
- No painel esquerdo, selecione Certificados & segredos>Certificados>Carregar certificado. Selecione o certificado (um certificado existente ou o certificado autoassinado que você exportou).
- 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.