问题描述
我知道 Microsoft 提供了一个特定于 Google 的 OIDC 包 (rm ~/.local/share/applications/google-chrome.dektop
),它采用 Microsoft.AspNetCore.Authentication.Google
中的一个选项来指定可以设置为 .AddGoogle()
的 Accesstype
。>
但这可以使用标准的 ASP.NET Core OIDC 包 offline
和 Microsoft.AspNetCore.Authentication.OpenIdConnect
来完成吗?
使用 Microsoft 帐户,我们可以简单地请求 .AddOpenIdConnect()
范围并且它完美运行。但它不适用于 Google 并导致 offline_access
错误。
解决方法
想通了。 Google 将 access_type
参数用于离线访问请求而不是范围。所以我们可以处理OnRedirectToIdentityProvider
中的OpenIdConnectOptions
事件来添加这个参数:
options.Events.OnRedirectToIdentityProvider = context =>
{
context.ProtocolMessage.SetParameter("access_type","offline");
return Task.CompletedTask;
};