В моем проекте для авторизации я использую IID-сервер OpenId Connect.
Одним из клиентов Identity является тип MVC.
Для масштабируемости мне нужно несколько реплик работающего клиента.
Когда номер клиента равен 1 (работает только один экземпляр), все отлично.
При увеличении количества клиентов до 2, после развертывания при просмотре страниц, требующих авторизации
- Перенаправление на сервер идентификации (как я и ожидал)
- После успешного входа в систему Identity устанавливает файлы cookie в домен сервера идентификации (как я и ожидал)
- Я ожидал, что после перенаправления в клиентском домене будут установлены MVC клиентские куки-файлы и авторизован пользователь, но выброшено это исключение:
Исключение: невозможно снять защиту сообщения. Состояние.
Неизвестное местоположение
Исключение: при обработке удаленного входа произошла ошибка.
MVC Настройки клиента OpenIdConnect:
"OpenIdConnect": {
"ClientId": "mvc",
"Authority": "https://identity.usw1.kubesail.io/",
"ClientSecret": "REDACTED",
"ResponseType": "code",
"UsePkce": false,
"GetClaimsFromUserInfoEndpoint": true,
"SaveTokens": false,
"RequireHttpsMetadata": false,
"Scope": [ "openid", "profile" ],
}
Настройка сервера идентификации для MVC Клиент
new Client
{
ClientId = "mvc",
ClientName = "MVC Client",
AllowedGrantTypes = GrantTypes.CodeAndClientCredentials,
RequirePkce = false,
ClientSecrets = { new Secret("REDACTED".Sha256()) },
RedirectUris = { "http://mvc.c1.kubesail.io/signin-oidc" },
FrontChannelLogoutUri = "http://mvc.c1.kubesail.io/signout-oidc",
PostLogoutRedirectUris = { "http://mvc.c1.kubesail.io/signout-callback-oidc" },
RequireConsent = false,
AllowOfflineAccess = true,
AllowedScopes = { "openid", "profile" }
}
Спецификация разработки и развертывания:
Сервер идентификации 4
Типы проектов: Asp. net core 3.1
Развертывание в Kubernetes