Configurar o acesso para provedores e funções
Com a autenticação do usuário em vigor, seu aplicativo Web de lista de compras precisa de uma maneira de restringir o acesso a algumas páginas para usuários que não estão conectados e permitir o logon somente por meio de provedores específicos.
Vamos examinar a configuração de roteamento e as funções nos Aplicativos Web Estáticos do Azure para ajustar o acesso do usuário ao nosso aplicativo Web.
Arquivo de configuração para Aplicativos Web Estáticos do Azure
A configuração dos Aplicativos Web Estáticos do Azure é definida no arquivo staticwebapp.config.json
, que controla as seguintes configurações:
- Roteamento
- Autenticação
- Autorização
- Regras de fallback
- Substituições de resposta HTTP
- Definições de cabeçalho HTTP global
- Tipos MIME personalizados
O local recomendado para o staticwebapp.config.json
está no conjunto de pastas como a configuração app_location
que escolhemos durante a implantação. No entanto, o arquivo pode ser colocado em qualquer local dentro da pasta do código-fonte do seu aplicativo.
Para nosso caso de uso, vamos procurar a configuração de roteamento para alcançar o que queremos.
Restringir provedores de autenticação
Em uma seção anterior, vimos que, por padrão, todos os provedores de autenticação estão habilitados. Podemos alterar isso adicionando regras de roteamento à configuração.
Por exemplo, para desabilitar o logon por meio do provedor do GitHub, você pode adicionar uma regra de roteamento como essa ao arquivo staticwebapp.config.json
.
{
"routes": [
{
"route": "/.auth/login/github",
"statusCode": 404
}
]
}
Forçamos a rota /.auth/login/github
usada para autenticar com o provedor do GitHub para retornar um erro 404
(não encontrado), de modo que os usuários não possam acessar. Você pode adicionar quantas regras de rotas quiser para desabilitar todos os provedores que você não deseja usar.
Proteger as rotas com funções
As rotas são, por padrão, acessíveis a todos sem nenhuma restrição. As rotas são protegidas pela adição de um ou mais nomes de função na matriz de uma regra allowedRoles
. Por padrão, cada usuário pertence à função anonymous
interna e todos os usuários conectados são membros da função authenticated
.
Isso significa que, para restringir uma rota somente a usuários autenticados, você pode adicionar a função interna authenticated
à matriz de allowedRoles
.
{
"routes": [
{
"route": "/profile",
"allowedRoles": ["authenticated"]
}
]
}
Com essa configuração, se um usuário não autenticado tentar acessar a rota /profile
, um erro 401
(não autorizado) será retornado.
Você também pode restringir métodos HTTP específicos para uma determinada rota, da seguinte maneira:
{
"routes": [
{
"route": "/profile",
"methods": ["PUT", "POST", "DELETE"],
"allowedRoles": ["authenticated"]
}
]
}
Neste exemplo, todos os usuários podem acessar o método GET
na rota /profile
, mas somente usuários autenticados podem usar PUT
, POST
ou DELETE
.
Usar um curinga
Você pode usar um caractere curinga no final da rota para corresponder a todas as rotas que seguem o padrão de base. Por exemplo, para restringir todas as URLs que começam com /api
para usuários autenticados, você pode escrever:
{
"routes": [
{
"route": "/api/*",
"allowedRoles": ["authenticated"]
}
]
}
Próximas etapas
A seguir, implementaremos restrições de acesso em nosso aplicativo.