Este artigo explica como gerir sessões com o Identity-Aware Proxy (IAP) se estiver a usar identidades externas para autenticação.
A atualizar sessões
As sessões da Identity Platform são válidas durante uma hora. Quando uma sessão expira, a sua app tem de fazer o redirecionamento para a página de autenticação. A página de autenticação contém o token de atualização do Identity Platform. Enquanto a credencial do utilizador continuar a ser válida, pode usá-la para reautenticação sem apresentar qualquer IU.
Se o utilizador alterou recentemente o email ou a palavra-passe, ou ocorreu alguma outra ação que revogou o respetivo token, tem de concluir novamente o fluxo de autenticação.
Processar pedidos não AJAX
Os pedidos não AJAX são processados automaticamente através de um redirecionamento da aplicação, partindo do princípio de que a página de autenticação está configurada corretamente.
Processar pedidos AJAX
O Chrome e outros navegadores estão a remover os cookies de terceiros. As recomendações para fazer pedidos AJAX nesta página não funcionam se os cookies de terceiros estiverem desativados. No entanto, as recomendações fornecidas vão permanecer funcionais se a origem e o destino dos pedidos AJAX forem do mesmo site.
Para instruções sobre como gerir cookies de terceiros no Chrome, consulte o artigo Elimine, permita e faça a gestão de cookies no Chrome.
Se enviar um pedido AJAX com um token expirado, o pedido devolve um código de estado 401: Unauthorized
. Implemente uma das seguintes soluções para
resolver este problema:
- Modifique o código da aplicação para processar os códigos de estado HTTP
401
. - Adicione um
iframe
à sua aplicação para apontar para a atualização da sessão. - Indique aos utilizadores que carreguem manualmente a atualização da sessão num separador separado.
Se estiver a receber um código de estado 302
em vez de 401
em resposta a pedidos AJAX, adicione um cabeçalho X-Requested-With
com um valor de XMLHttpRequest
.
Isto informa a IAP de que o pedido tem origem no JavaScript.
Processamento programático de HTTP 401
O processamento programático de códigos de estado HTTP 401
é a forma recomendada de
atualizar uma sessão AJAX. Para o fazer:
Atualize o código da aplicação para processar o erro.
Adicione um controlador que abra uma janela para reautenticar o utilizador e, em seguida, feche-a quando o processo for concluído.
Usar um iFrame
Se não conseguir processar o HTTP 401
de forma programática, a melhor solução seguinte é adicionar um iframe
à sua aplicação que aponte para a atualização da sessão.
A utilização de um iFrame requer a configuração de uma página de início de sessão personalizada no mesmo domínio que a app Web protegida por IAP. Caso contrário, os utilizadores vão encontrar erros de origem cruzada. Para mais informações sobre a configuração da página de início de sessão, consulte o artigo Crie uma página de início de sessão personalizada.
Exemplo de utilização 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>
A carregar a atualização da sessão
Em último recurso, pode dar instruções aos utilizadores para carregarem manualmente a atualização da sessão. Adicione orientações à sua aplicação ou à respetiva documentação que direcionem os utilizadores para abrirem o seguinte URL num separador separado:
https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER
Terminar sessão dos utilizadores
Para terminar a sessão de um utilizador num recurso de IAP, use o parâmetro de consulta
?gcp-iap-mode=GCIP_SIGNOUT
. Por exemplo, numa app do App Engine, o URL tem o seguinte aspeto:
https://example.com/some/path?gcp-iap-mode=GCIP_SIGNOUT
Os utilizadores são redirecionados de volta para a página de início de sessão depois de terminarem sessão.
Para terminar a sessão de um utilizador em todos os recursos e sessões, redirecione-o para o seu URL de autenticação com a sua chave da API e mode=signout
anexados como parâmetros. Por exemplo:
https://auth.example.com/?apiKey=API-KEY&mode=signout
Os utilizadores permanecem na página depois de terminarem sessão. Pondere implementar o callback completeSignOut()
no objeto AuthenticationHandler
para dar feedback ao utilizador de que terminou sessão com êxito.
Alternar entre inquilinos
Em alguns casos, um utilizador pode querer autenticar-se com vários inquilinos para o mesmo recurso de IAP. Por exemplo, podem pertencer a vários inquilinos que concedem diferentes níveis de acesso e querer mudar para um inquilino com menos ou mais privilégios.
Para forçar o reinício do processo de seleção do inquilino, use
?gcp-iap-mode=CLEAR_LOGIN_COOKIE
. Por exemplo, numa app do App Engine, o URL pode ter o seguinte aspeto:
https://PROJECT-ID.appspot.com/some/path?gcp-iap-mode=CLEAR_LOGIN_COOKIE