GOOGLE ADS

jueves, 21 de abril de 2022

El proceso de cierre de sesión en Google OIDC Authentication en Blazor Web Assembly no funciona como se esperaba

La implementación actual de cierre de sesión en RemoteAuthenticationServiceBlazor Web Assembly no realiza ninguna solicitud de revocación con Google Open Id Provider. El token solicitado en el paso de inicio de sesión es válido y solo se borra del almacenamiento de la sesión y si hay un punto final de cierre de sesión en el proveedor OIDC, llámelo (en el proveedor OIDC de Google no existe tal punto final pero existe un punto final de revocación). ¿Cómo invalidar el token? ¿Es necesario en absoluto?


Solución del problema

Personalmente, creo que es necesario cerrar la sesión o revocar la autenticación porque si todos van a la página de inicio de sesión, se autenticarán automáticamente sin ninguna confirmación del usuario (lo que puede no ser el comportamiento esperado). Debe hacer una solicitud a la siguiente URL para revocar el token. validez.

async function revokeGoogle(token) {
await fetch("https://accounts.google.com/o/oauth2/revoke?token="+token,{"method": "GET",});
}

Podemos hacerlo en el componente Authorization.razor en caso de una acción de cierre de sesión como se muestra a continuación ( _authServicees el proveedor de token de acceso inyectado o la instancia del Servicio de autenticación remota, que es lo mismo en Blazor Web Assembly):

protected override async Task OnInitializedAsync()
{
switch (Action)
{
// In this case we also logout from google too. We should do it for sure
case "logout":
if (_authService is IAccessTokenProvider provider)
{
var result = await provider.RequestAccessToken();
result.TryGetToken(out var token);
Console.WriteLine(token.Value);
await _js.InvokeVoidAsync("revokeGoogle", (object)token.Value);
}
break;
default:
break;
}
await base.OnInitializedAsync();
}

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...