我有一个基于Identity server 4的OIDC身份验证服务器,它允许与外部身份提供程序进行联合。
services.AddAuthentication()
.AddOpenIdConnect(extIDP.AuthScheme, extIDP.AuthDisplay, options =>
{
options.SignInScheme = extIDP.Options.SignInScheme;
options.SignOutScheme = extIDP.Options.SignOutScheme;
options.Authority = extIDP.Options.Authority;
options.ClientId = extIDP.Options.ClientId;
options.ClientSecret = extIDP.Options.ClientSecret;
options.ResponseType = extIDP.Options.ResponseType;
options.CallbackPath = extIDP.Options.CallbackPath;
options.SignedOutCallbackPath = extIDP.Options.SignedOutCallbackPath;
options.RemoteSignOutPath = extIDP.Options.RemoteSignOutPath;
options.RequireHttpsMetadata = extIDP.Options.RequireHttpsMetadata;
options.SaveTokens = true;
options.Scope.Clear();
options.Scope.Add(IdentityServerConstants.StandardScopes.OpenId);
options.Scope.Add(IdentityServerConstants.StandardScopes.Profile);
options.Scope.Add(IdentityServerConstants.StandardScopes.Email);
options.Scope.Add(JwtClaimTypes.Role);
});
extIDP来自某些配置。
所以这工作得很好,但是我们有一个客户端的IDP不支持form_post的响应模式(这是上面设置中使用的默认模式),所以如果我在配置中添加一个额外的行来将ResponseMode设置为“fragment”,那么我们应该很好,但它不工作。
我最终报告了一个相关错误
在Auth服务器中启用详细日志记录后,我们将得到
警告:Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler
未找到“.AspNetCore.Correlation”状态属性
注意,这是在本地对两个测试身份验证服务器运行时发生的,因此与负载平衡问题无关。
我还添加了一个cookie策略,以确保它不是由严格的cookie策略引起的。所以我现在有点困了。