Google OIDC Authentication in Blazor Web Assembly中的登录过程没有按预期



当前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();
    }

最新更新