Cenário: Aplicativo daemon que chama APIs da WebScenario: Daemon application that calls web APIs

Saiba tudo o que você precisa para criar um aplicativo daemon que chama APIs da Web.Learn all you need to build a daemon application that calls web APIs.

Pré-requisitosPrerequisites

Antes de ler este artigo, você deve estar familiarizado com os conceitos a seguir ou leia os seguintes artigos:Before reading this article, you should be familiar with the following concepts or read the following articles:

Visão geralOverview

Seu aplicativo pode adquirir um token para chamar uma API da Web em nome de si mesmo (não em nome de um usuário).Your application can acquire a token to call a web API on behalf of itself (not on behalf of a user). Esse cenário é útil para aplicativos de daemon.This scenario is useful for daemon applications. Ele está usando a concessão de credenciais de cliente OAuth 2,0 padrão.It's using the standard OAuth 2.0 client credentials grant.

Aplicativos Daemon

Aqui estão alguns exemplos de casos de uso para aplicativos de daemon:Here are some examples of use cases for daemon apps:

  • Aplicativos Web que são usados para provisionar ou administrar usuários, ou processos em lote em um diretórioWeb applications that are used to provision or administer users, or do batch processes in a directory
  • Aplicativos de área de trabalho (como serviços do Windows no Windows ou processos de daemons no Linux) que executam trabalhos em lotes ou um serviço de sistema operacional em execução em segundo planoDesktop applications (such as windows services on Windows, or daemons processes on Linux) that perform batch jobs, or an operating system service running in the background
  • APIs Web que precisam manipular diretórios, não usuários específicosWeb APIs that need to manipulate directories, not specific users

Há outro caso comum em que aplicativos não daemon usam credenciais de cliente: mesmo quando eles atuam em nome dos usuários, eles precisam acessar uma API da Web ou um recurso com sua identidade por motivos técnicos.There's another common case where non-daemon applications use client credentials: even when they act on behalf of users, they need to access a web API or a resource with their identity for technical reasons. Um exemplo é o acesso a segredos no keyvault ou um banco de dados SQL do Azure para um cache.An example is access to secrets in KeyVault or an Azure SQL database for a cache.

Aplicativos que adquirem um token para suas próprias identidades:Applications that acquire a token for their own identities:

  • São aplicativos cliente confidenciais.Are confidential client applications. Esses aplicativos, Considerando que acessam recursos independentemente de um usuário, precisam provar sua identidade.These apps, given that they access resources independently of a user, need to prove their identity. Eles também são aplicativos confidenciais, que precisam ser aprovados pelos administradores de locatário do Azure Active Directory (AD do Azure).They're also rather sensitive apps, which they need to be approved by the Azure Active Directory (Azure AD) tenant admins.
  • Registrou um segredo (senha de aplicativo ou certificado) com o Azure AD.Have registered a secret (application password or certificate) with Azure AD. Esse segredo é passado durante a chamada para o Azure AD para obter um token.This secret is passed-in during the call to Azure AD to get a token.

EspecificaçõesSpecifics

Importante

  • A interação do usuário não é possível com um aplicativo daemon.User interaction isn't possible with a daemon application. Um aplicativo daemon requer sua própria identidade.A daemon application requires its own identity. Esse tipo de aplicativo solicita um token de acesso usando sua identidade de aplicativo e apresentando sua ID de aplicativo, credencial (senha ou certificado) e URI de ID do aplicativo para o Azure AD.This type of application requests an access token by using its application identity and presenting its application ID, credential (password or certificate), and application ID URI to Azure AD. Após a autenticação bem-sucedida, o daemon recebe um token de acesso (e um token de atualização) do ponto de extremidade da plataforma de identidade da Microsoft, que é usado para chamar a API da Web (e é atualizado conforme necessário).After successful authentication, the daemon receives an access token (and a refresh token) from the Microsoft identity platform endpoint, which is then used to call the web API (and is refreshed as needed).
  • Como a interação do usuário não é possível, o consentimento incremental não será possível.Because user interaction is not possible, incremental consent won't be possible. Todas as permissões de API necessárias precisam ser configuradas no registro do aplicativo, e o código do aplicativo apenas solicita permissões definidas estaticamente.All the required API permissions need to be configured at application registration, and the code of the application just requests statically defined permissions. Isso também significa que os aplicativos daemon não oferecerão suporte a consentimento incremental.This also means that daemon applications won't support incremental consent.

Para os desenvolvedores, a experiência de ponta a ponta para esse cenário tem os seguintes aspectos:For developers, the end-to-end experience for this scenario has the following aspects:

  • Os aplicativos daemon só podem funcionar em locatários do Azure AD.Daemon applications can only work in Azure AD tenants. Não faz sentido criar um aplicativo daemon que tente manipular contas pessoais da Microsoft.It wouldn't make sense to build a daemon application that attempts to manipulate Microsoft personal accounts. Se você for um desenvolvedor de aplicativos LOB (linha de negócios), criará seu aplicativo daemon em seu locatário.If you're a line-of-business (LOB) app developer, you'll create your daemon app in your tenant. Se você for um ISV, talvez queira criar um aplicativo de daemon multilocatário.If you're an ISV, you might want to create a multi-tenant daemon application. Ele precisará ser consentido por cada administrador de locatários.It will need to be consented by each tenant admin.
  • Durante o registro do aplicativo, o URI de resposta não é necessário.During the Application registration, the Reply URI isn't needed. Você precisa compartilhar segredos ou certificados com o Azure AD e precisa solicitar permissões de aplicativos e conceder consentimento de administrador para usar essas permissões de aplicativo.You need to share secrets or certificates with Azure AD, and you need to request applications permissions and grant admin consent to use those app permissions.
  • A configuração do aplicativo precisa fornecer credenciais de cliente como compartilhadas com o Azure ad durante o registro do aplicativo.The Application configuration needs to provide client credentials as shared with Azure AD during the application registration.
  • O escopo usado para adquirir um token com o fluxo de credenciais do cliente precisa ser um escopo estático.The scope used to acquire a token with the client credentials flow needs to be a static scope.

Próximas etapasNext steps