Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como gerenciar tokens OAuth para autenticação e autorização internas no Serviço de Aplicativo do Azure.
Recuperar tokens no código do aplicativo
O Serviço de Aplicativo do Azure injeta tokens específicos do provedor no cabeçalho da solicitação para que você possa acessá-los facilmente. Para obter os tokens específicos do provedor, o repositório de tokens deve estar habilitado para o aplicativo.
Do seu código do cliente (por exemplo, um aplicativo móvel ou JavaScript no navegador), envie uma solicitação HTTP GET para /.auth/me. O JSON retornado tem os tokens específicos do provedor.
Observação
Os tokens de acesso são para acessar recursos do provedor, portanto, só estarão presentes se você configurar seu provedor com um segredo do cliente.
A tabela a seguir lista os nomes de cabeçalho do token OAuth para vários provedores internos do Serviço de Aplicativo:
| Provedor | Nomes do Cabeçalho |
|---|---|
| Microsoft Entra | X-MS-TOKEN-AAD-ID-TOKEN X-MS-TOKEN-AAD-ACCESS-TOKEN X-MS-TOKEN-AAD-EXPIRES-ON X-MS-TOKEN-AAD-REFRESH-TOKEN |
X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN X-MS-TOKEN-FACEBOOK-EXPIRES-ON |
|
X-MS-TOKEN-GOOGLE-ID-TOKEN X-MS-TOKEN-GOOGLE-ACCESS-TOKEN X-MS-TOKEN-GOOGLE-EXPIRES-ON X-MS-TOKEN-GOOGLE-REFRESH-TOKEN |
|
| X | X-MS-TOKEN-TWITTER-ACCESS-TOKEN X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET |
Observação
Diferentes estruturas de linguagem podem apresentar esses cabeçalhos ao código do aplicativo em diferentes formatos, como letras minúsculas ou maiúsculas.
Atualizar tokens de autenticação
As informações a seguir referem-se a tokens de provedor. Para tokens de sessão, consulte Estender o período de carência de expiração do token de sessão.
Se o token de acesso do provedor expirar, você deverá reautenticar o usuário antes de poder usar esse token novamente. Você pode evitar a expiração do token fazendo uma GET chamada para o /.auth/refresh ponto de extremidade de seu aplicativo.
Para atualizar o seu token de acesso a qualquer momento, chame /.auth/refresh usando qualquer linguagem de programação. O snippet a seguir usa o jQuery para atualizar seus tokens de acesso de um cliente JavaScript.
function refreshTokens() {
let refreshUrl = "/.auth/refresh";
$.ajax(refreshUrl) .done(function() {
console.log("Token refresh completed successfully.");
}) .fail(function() {
console.log("Token refresh failed. See application logs for details.");
});
}
Quando chamado, o Serviço de Aplicativo atualiza automaticamente tokens de acesso no repositório de token para o usuário autenticado. As solicitações subsequentes de tokens obtêm os tokens atualizados. Você pode ver os tokens de atualização e o tempo de expiração dos tokens usando os cabeçalhos listados em Recuperar tokens no código do aplicativo.
Observação
Se um usuário revogar as permissões que foram concedidas ao seu aplicativo, a sua chamada para /.auth/me poderá falhar com a resposta 403 Forbidden. Para diagnosticar erros, verifique os logs de aplicativo para obter detalhes.
Configurar provedores para fornecer tokens de atualização
Para que a atualização de token funcione, o repositório de tokens deve conter tokens de atualização do seu provedor. Cada provedor documenta como obter seus tokens de atualização. A tabela a seguir fornece um breve resumo:
| Provedor | Tokens de atualização |
|---|---|
| Microsoft | Siga o procedimento em Configurar o provedor do Microsoft Entra para fornecer tokens de atualização. |
| Não fornece tokens de atualização. Tokens de longa duração expiram em 60 dias. Para obter mais informações, consulte Long-Lived Tokens de Acesso. | |
Acrescente um parâmetro de cadeia de caracteres de consulta access_type=offline à chamada à API /.auth/login/google. Para saber mais, confira Tokens de Atualização do Google. |
|
| X | Os tokens de acesso não expiram. Para obter mais informações, consulte perguntas frequentes sobre o OAuth. |
Configurar o provedor do Microsoft Entra para fornecer tokens de atualização
- No portal do Azure, acesse o Playground da API (versão prévia) e selecione Nova solicitação , se necessário.
- No caminho relativo Enter ARM aqui, incluindo o campo de versão da API, insira a seguinte cadeia de caracteres, substituindo os espaços reservados pela ID da assinatura, pelo nome do grupo de recursos e pelo nome do aplicativo:
subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<app-name>/config/authsettingsV2?api-version=2024-11-01 - Selecione Executar.
- Selecione
PUTno canto superior esquerdo e selecione a guia Corpo da solicitação . - Copie o
GETconteúdo da resposta do campo Corpo da resposta e cole-os na guia Corpo da solicitação . - No código, localize a
"identityProviders":>>"azureActiveDirectory":"login":seção e adicione a seguinte linha:"loginParameters": ["scope=openid profile email offline_access"] - Selecione Executar. O campo Corpo da resposta mostra suas alterações.
Offline_access é o escopo que fornece tokens de atualização. O Serviço de Aplicativo já solicita os outros escopos por padrão. Para obter mais informações, consulte Escopos do OpenID Connect e Aplicativos Web – Atualizar Configurações de Autenticação V2.
Estender o período de cortesia de término do token da sessão
A sessão autenticada expira após 8 horas e um período de carência padrão de 72 horas segue. Nesse período de carência, você pode atualizar o token de sessão com o Serviço de Aplicativo sem autenticar novamente o usuário. Você pode simplesmente chamar /.auth/refresh quando o token de sessão se torna inválido e você não precisa acompanhar a expiração do token por conta própria.
Quando o período de carência de 72 horas expirar, o usuário deverá entrar novamente para obter um token de sessão válido. Se você precisar de uma janela de expiração maior que 72 horas, poderá estendê-la, mas estender a expiração por um longo período poderá ter implicações significativas de segurança se um token de autenticação for vazado ou roubado. É melhor deixar a configuração no padrão de 72 horas ou definir o período de extensão como o menor valor possível.
Para estender a janela de expiração padrão, execute o seguinte comando da CLI do Azure no Azure Cloud Shell:
az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>
Observação
O período de carência se aplica somente à sessão autenticada do Serviço de Aplicativo, não aos tokens de acesso dos provedores de identidade. Não existe nenhum período de carência para tokens de provedor expirados.