Neste artigo, você aprenderá como gerenciar sessões com o Identity-Aware Proxy (IAP) ao usar identidades externas para fins de autenticação.
Como atualizar as sessões
As sessões do Identity Platform têm validade de uma hora. Quando uma sessão expira, seu app precisa redirecionar para a página de autenticação. A página de autenticação contém o token de atualização do Identity Platform. Contanto que a credencial do usuário ainda seja válida, é possível usá-la para fazer a autenticação novamente, sem a necessidade de exibir qualquer IU.
No entanto, se o usuário alterou o e-mail ou a senha há pouco tempo ou se ocorreu alguma outra ação que revogou o token, esse usuário precisará concluir o fluxo de autenticação novamente.
Como processar solicitações não AJAX
As solicitações não AJAX são processadas automaticamente usando um redirecionamento de aplicativo, desde que a página de autenticação esteja configurada corretamente.
Como processar solicitações AJAX
O Chrome e outros navegadores estão desativando os cookies de terceiros. As recomendações para fazer solicitações AJAX nesta página não vão funcionar se os cookies de terceiros estiverem desativados. No entanto, as recomendações fornecidas vão continuar funcionando se a origem e o destino das solicitações AJAX forem do mesmo site.
Para instruções sobre como gerenciar cookies de terceiros no Chrome, consulte Excluir, permitir e gerenciar cookies no Chrome.
Se você enviar uma solicitação AJAX com um token expirado, ela retornará um código de status 401: Unauthorized
. Implemente uma das soluções a seguir para resolver isso:
- Modifique o código do aplicativo para que ele processe códigos de status HTTP
401
. - Inclua um
iframe
no aplicativo para que ele aponte para o atualizador de sessão. - Instrua os usuários a carregar manualmente o atualizador de sessão em uma guia diferente.
Se você está recebendo um código de status 302
, em vez de 401
, como resposta às solicitações AJAX, inclua um cabeçalho X-Requested-With
com um valor de XMLHttpRequest
.
Isso informa ao IAP que a solicitação é originária do JavaScript.
Como processar o código de status HTTP 401 de forma programática
Processar códigos de status HTTP 401
de maneira programática é a abordagem recomendável para atualizar uma sessão AJAX. Para fazer isso:
Atualize o código do aplicativo para que ele processe o erro.
Inclua um gerenciador que abra uma janela para autenticar novamente o usuário e feche-a quando o processo for concluído.
Como usar um iframe
Se você não conseguir processar o código HTTP 401
de maneira programática, a melhor solução é incluir um iframe
no aplicativo que aponte para o atualizador de sessão.
O uso de um iframe exige que você configure uma página de login personalizada no mesmo domínio do app da Web protegido pelo IAP. Caso contrário, os usuários vão encontrar erros de origem cruzada. Para mais informações sobre a configuração da página de login, consulte Criar uma página de login personalizada.
Exemplo de uso de um iframe:
<iframe src="https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER" style="width:0;height:0;border:0; border:none;"></iframe>
Como carregar o atualizador de sessão
Como último recurso, é possível instruir seus usuários a carregar manualmente o atualizador de sessão. Inclua essa orientação no seu aplicativo ou na respectiva documentação, instruindo os usuários a abrir o URL a seguir em uma guia diferente:
https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER
Como desconectar os usuários
Para desconectar um usuário de um recurso IAP, use o parâmetro de consulta ?gcp-iap-mode=GCIP_SIGNOUT
. Por exemplo, em um aplicativo do App Engine, o URL é semelhante a este:
https://example.com/some/path?gcp-iap-mode=GCIP_SIGNOUT
Os usuários serão redirecionados para a página de login após serem desconectados.
Para desconectar um usuário de todos os recursos e sessões, redirecione-o para seu
URL de autenticação com a chave de API e mode=signout
anexados como parâmetros. Exemplo:
https://auth.example.com/?apiKey=API-KEY&mode=signout
Os usuários permanecerão na página após serem desconectados. Pense em implementar o callback completeSignOut()
no objeto AuthenticationHandler
para informar ao usuário que ele foi desconectado.
Como alternar entre locatários
Em alguns casos, um usuário pode querer autenticar com vários locatários no mesmo recurso do IAP. Por exemplo, ele pode pertencer a vários locatários que concedem níveis de acesso diferentes e querer mudar para um com menos ou mais privilégios.
Para forçar a reinicialização no processo de seleção de locatário, use ?gcp-iap-mode=CLEAR_LOGIN_COOKIE
. Por exemplo, em um aplicativo do App Engine, o URL é semelhante a este:
https://PROJECT-ID.appspot.com/some/path?gcp-iap-mode=CLEAR_LOGIN_COOKIE