У меня есть сервер аутентификации OIDC на базе Identity Server 4, который позволяет выполнять федерацию с внешним поставщиком удостоверений.
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 значение «фрагмент», то мы должны быть в порядке, но это не работает.
Я получаю сообщение об ошибке корреляции
С подробным ведением журнала на нашем сервере аутентификации мы получаем
Предупреждение. Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler
".AspNetCore.Correlation." государственная собственность не найдена
Обратите внимание, что это происходит при локальном запуске двух тестовых серверов аутентификации, поэтому не имеет ничего общего с проблемами балансировки нагрузки.
Я также добавил политику использования файлов cookie, чтобы гарантировать, что она не была вызвана строгой политикой использования файлов cookie. Так что я сейчас немного застрял.