Gerenciar autenticação em Aplicativos Web Estáticos

Concluído

Seu aplicativo Web de lista de compras precisa de uma forma de identificar exclusivamente os usuários e fornecer a eles um espaço pessoal para armazenar os produtos.

A autenticação é a maneira como você verificará a identidade de um usuário que está tentando acessar um sistema de informações. Agora vamos examinar a autenticação e como você pode implementá-la em Aplicativos Web Estáticos do Azure.

Provedores de identidade

O serviço Aplicativos Web Estáticos do Azure simplifica a experiência de autenticação gerenciando esta com os seguintes provedores:

  • Microsoft Entra ID
  • GitHub
  • X

Todos os provedores de autenticação são habilitados por padrão. Veremos mais tarde como você pode restringir um provedor de autenticação com uma regra de rota personalizada.

Pasta do sistema

A pasta do sistema /.auth fornece acesso a todas as APIs relacionadas à autenticação. Você pode usar esses pontos de extremidade para implementar um fluxo de trabalho de autenticação completo em seu aplicativo, incluindo logon e logoff e acesso às informações do usuário.

Logon

A tabela a seguir lista a rota de logon específica do provedor que você pode usar em seu aplicativo.

Provedor de identidade Rota de logon
Microsoft Entra ID /.auth/login/aad
GitHub /.auth/login/github
X /.auth/login/x

Por exemplo, para entrar com o GitHub, você pode incluir um link de logon em seu aplicativo Web com o seguinte snippet de código:

<a href="/.auth/login/github">Login</a>

Se quiser que o usuário retorne a uma página específica após o logon, você poderá fornecer uma URL no parâmetro de cadeia de caracteres de consulta post_login_redirect_uri. Por exemplo:

<a href="/.auth/login/github?post_login_redirect_uri=/products">Login</a>

Logout

A rota /.auth/logout registra os usuários do aplicativo Web. Você pode adicionar um link para a navegação do site para permitir que o usuário faça logoff, conforme mostrado no exemplo a seguir.

<a href="/.auth/logout">Log out</a>

Assim como com o logon, você pode fornecer uma URL para redirecionamento depois de fazer logoff usando o parâmetro de cadeia de caracteres de consulta post_logout_redirect_uri:

<a href="/.auth/logout?post_logout_redirect_uri=/home">Log out</a>

Acessar informações do usuário

Você pode acessar informações de usuário relacionadas à autenticação por meio de um ponto de extremidade de acesso direto ou um cabeçalho especial em funções de API.

Se você enviar uma solicitação GET para a rota /.auth/me, receberá um objeto JSON com os dados para o usuário conectado no momento. As solicitações de usuários não autenticados retornam null.

Confira a seguir um exemplo de objeto de resposta.

{
  "identityProvider": "github",
  "userId": "d75b260a64504067bfc5b2905e3b8182",
  "userDetails": "github-user-example",
  "userRoles": [ "anonymous", "authenticated" ]
}

Funções da API

Todas as funções de API disponíveis em Aplicativos Web Estáticos do Azure têm acesso às mesmas informações de usuário que o aplicativo cliente. Os dados do usuário são passados para funções no cabeçalho HTTP x-ms-client-principal. Os dados são serializados como um objeto JSON e codificados em Base64.

A função de exemplo a seguir mostra como ler e retornar informações do usuário.

module.exports = async function (context, req) {
  const header = req.headers["x-ms-client-principal"];
  const encoded = Buffer.from(header, "base64");
  const decoded = encoded.toString("ascii");

  context.res = {
    body: {
      userInfo: JSON.parse(decoded)
    }
  };
};

Próximas etapas

A seguir, implementaremos um fluxo de trabalho de autenticação completo em nosso aplicativo.

Verificar seu conhecimento

1.

Qual padrão de rota você usaria para fazer uma solicitação de autenticação?