当前Blazor Web Assembly中RemoteAuthenticationService
的注销实现不做任何与Google Open Id Provider的撤销请求。在登录步骤中请求的令牌是有效的,并且仅从会话存储中清除,如果OIDC提供程序中存在签出端点,则调用它(在Google OIDC提供程序中没有这样的端点,但存在吊销端点)。如何使令牌无效?有必要吗?
我个人认为有必要注销或撤销身份验证,因为如果每个人都去登录页面,它会自动进行身份验证,而无需用户的任何确认(这可能不是预期的行为)您应该向以下url发出请求以撤销令牌的有效性。
async function revokeGoogle(token) {
await fetch("https://accounts.google.com/o/oauth2/revoke?token="+token,{"method": "GET",});
}
我们可以在授权中这样做。(_authService
是注入的访问令牌提供者或远程认证服务实例,在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();
}