Implementar a autenticação e a autorização nos 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 o aplicativo de contêiner habilitado para entrada externa com código mínimo ou sem código. O recurso de autenticação interna para Aplicativos de Contêiner pode economizar tempo e esforço ao fornecer 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 oferecem acesso a vários provedores de autenticação internos.
  • Os recursos de autenticação internos não exigem nenhuma linguagem, SDK, competência em segurança ou mesmo qualquer código específico que você precise escrever.

Esse recurso só deve ser usado com HTTPS. Verifique se allowInsecure está desabilitado na configuração de entrada do aplicativo de contêiner. Você pode configurar seu aplicativo de contêiner para autenticação com ou sem restrição de acesso ao conteúdo do site e 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.

Provedores 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:

Provedor Ponto de extremidade de entrada Diretrizes
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

Ao usar um desses provedores, o ponto de extremidade de entrada está disponível para autenticação de usuários e validação de tokens de autenticação do provedor. Você pode oferecer aos seus usuários qualquer número dessas opções de provedores.

Arquitetura do recurso

O componente middleware de autenticação e autorização é um recurso da plataforma que é executado como um contêiner sidecar em cada réplica do seu aplicativo. Quando habilitado, todas as solicitações HTTP recebidas passam pela camada de segurança antes de serem tratadas pelo seu aplicativo.

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

O middleware da plataforma gerencia várias funções para seu aplicativo:

  • Autentica usuários e clientes com os provedores de identidade especificados
  • Gerencia a sessão autenticada
  • Injeta informações de identidade nos 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 no processo, não é possível fazer integração direta com estruturas de linguagem específicas. No entanto, as informações relevantes de que o 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 de você querer entrar com o SDK do provedor:

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

  • Com o SDK do provedor (fluxo direcionado pelo cliente ou fluxo de cliente): o aplicativo conecta os usuários ao provedor manualmente e, em seguida, envia o token de autenticação aos Aplicativos de Contêiner para validação. Essa abordagem é típica para 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.