我正在使用 Blazor 8 WebApp 和 Azure AD OIDC 身份验证。一切都在本地工作,但在服务器上,身份验证后,我可以看到重定向无限发生,直到 cookie 大小变得太长,然后它说“我们无法让您登录。请重试”。
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
.AddMicrosoftGraph(builder.Configuration.GetSection("MicrosoftGraph"))
.AddInMemoryTokenCaches();
builder.Services.Configure<OpenIdConnectOptions>(
OpenIdConnectDefaults.AuthenticationScheme,
options =>
{
var clientId = builder.Configuration.GetValue<string>("AzureAd:ClientId");
options.ResponseType = OpenIdConnectResponseType.Code;
options.SaveTokens = true;
options.Scope.Add("offline_access");
options.Scope.Add($"api://{clientId}/access_as_user");
options.ClientId = clientId;
}
我可以看到重定向网址是正确的 https。
关于为什么 cookie 一旦设置,没有被拾取的任何想法,因为我怀疑这可能是问题所在。
我尝试过使用 ForwardedHeaders 中间件。
var forwardedHeaderOptions = new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
};
forwardedHeaderOptions.KnownProxies.Clear();
forwardedHeaderOptions.KnownNetworks.Clear();
app.UseForwardedHeaders(forwardedHeaderOptions);
事实证明,我使用了错误的证书存储路径来查找证书。解决了这个问题,你瞧!