Implementar autenticação e autorização em Aplicativos de Contêiner do Azure

Concluído

Os Aplicativos de Contêiner do Azure fornecem recursos internos de autenticação e autorização para proteger seu aplicativo de contêiner externo habilitado para entrada com pouco ou nenhum código. O recurso de autenticação interno para Aplicativos de Contêiner pode economizar tempo e esforço, fornecendo autenticação pronta para uso com provedores de identidade federada, permitindo que você se concentre no restante do seu aplicativo.

  • Os Aplicativos de Contêiner do Azure fornecem acesso a vários provedores de autenticação internos.
  • Os recursos de autenticação integrados não exigem nenhuma linguagem específica, SDK, experiência em segurança ou até mesmo qualquer código que você tenha que escrever.

Este recurso só deve ser usado com HTTPS. Verifique se allowInsecure está desabilitado na configuração de entrada do seu aplicativo de contêiner. Você pode configurar seu aplicativo de contêiner para autenticação com ou sem restringir o acesso ao conteúdo do site e às APIs.

  • Para restringir o acesso ao aplicativo apenas a usuários autenticados, defina a configuração Restringir acesso como Exigir autenticação.
  • Para autenticar, mas não restringir o acesso, defina a configuração Restringir acesso como Permitir acesso não autenticado .

Fornecedores de identidade

Os Aplicativos de Contêiner usam identidade federada, na qual um provedor de identidade de terceiros gerencia as identidades de usuário e o fluxo de autenticação para você. Os seguintes provedores de identidade estão disponíveis por padrão:

Provider Ponto de extremidade de entrada Orientação de instruções
Plataforma de Identidade da Microsoft /.auth/login/aad Plataforma de Identidade da Microsoft
Facebook /.auth/login/facebook Facebook
GitHub /.auth/login/github GitHub
Google /.auth/login/google Google
X /.auth/login/twitter X
Qualquer provedor OpenID Connect /.auth/login/<providerName> OpenID Connect

Quando você usa um desses provedores, o ponto de extremidade de entrada fica disponível para autenticação de usuário e validação de token de autenticação do provedor. Você pode fornecer aos usuários qualquer número dessas opções de provedor.

Arquitetura de recursos

O componente middleware de autenticação e autorização é um recurso da plataforma que é executado como um contêiner sidecar em cada réplica em seu aplicativo. Quando habilitada, cada solicitação HTTP de entrada passa pela camada de segurança antes de ser manipulada pelo seu aplicativo.

Diagrama mostrando solicitações sendo intercetadas por um contêiner sidecar interagindo com provedores de identidade antes de permitir o tráfego para o contêiner do aplicativo.

O middleware da plataforma lida com várias coisas para seu aplicativo:

  • Autentica usuários e clientes com os provedores de identidade especificados
  • Gerencia a sessão autenticada
  • Injeta informações de identidade em cabeçalhos de solicitação HTTP

O módulo de autenticação e autorização é executado em um contêiner separado, isolado do código do aplicativo. Como o contêiner de segurança não é executado em processo, nenhuma integração direta com estruturas de linguagem específicas é possível. No entanto, as informações relevantes de que seu aplicativo precisa são fornecidas nos cabeçalhos de solicitação.

Fluxo de autenticação

O fluxo de autenticação é o mesmo para todos os provedores, mas difere dependendo se você deseja entrar com o SDK do provedor:

  • Sem SDK do provedor (fluxo direcionado ao servidor ou fluxo do servidor): o aplicativo delega a entrada federada aos Aplicativos de Contêiner. Normalmente, a delegação é o caso dos aplicativos do navegador, que apresentam a página de entrada do provedor ao usuário.

  • Com o SDK do provedor (fluxo direcionado ao cliente ou fluxo do cliente): o aplicativo conecta os usuários ao provedor manualmente e, em seguida, envia o token de autenticação para Aplicativos de Contêiner para validação. Essa abordagem é típica de aplicativos sem navegador que não apresentam a página de entrada do provedor ao usuário. Um exemplo é um aplicativo móvel nativo que conecta usuários usando o SDK do provedor.