Я пытаюсь создать конфигурацию ведущий-ведомый тип аутентификации с IdentityServer4 нижеMultiple IdentityServer Федерация: Ошибка Невозможно незащитил message.State
MyMasterIdentityServer0 (Master) - receives id_token and gives access_token
|---> MySlaveIdentityServer1 (Basic Auth)
|---> MySlaveIdentityServer2 (Windows Auth)
|---> MySlaveIdentityServer3 (SmartCard Certificate Auth)
|---> MySlaveIdentityServer4 (SAML SSO Auth)
|---> Cloud Demo IdentityServer
|---> Google Auth
|---> Facebook Auth
|---> Microsoft Auth
|---> Twitter Auth
Все мои приложения и апи укажут и аутентификации MyMasterIdentityServer0
Пользователи могут иметь возможность аутентификации с использованием любого из указанных выше поставщиков. Они могут выбрать имя пользователя/пароль, и в этом случае они должны быть перенаправлены на MySlaveIdentityServer1 (Basic Auth), или они могут выбрать с использованием Windows Auth, используя свою учетную запись AD, и в этом случае они будут перенаправлены на MySlaveIdentityServer2 (Windows Auth) , или выберите любого другого провайдера.
После того как пользователь прошел аутентификацию, он получает id_token от сервера провайдера и перенаправляется обратно в MyMasterIdentityServer0, где внешний пользователь ищутся с помощью поставщику и ProviderUserId, а затем отводилась access_token для доступа к приложениям/api на основе его разрешений.
Они Проблема я столкнулся в том, что конфигурация IdentityServer Master Ведомый не работает для меня и дает мне ошибку Невозможно незащитил message.State, когда пользователь перенаправляется обратно к главному серверу после аутентификации. Я попытался разобраться с проблемой, и AuthO также столкнулась с такой же ошибкой, которую недавно установили.
Ошибка Полученное
Исключение: Невозможно незащитил message.State
IdentityServer-Мастер конфигурации
// WORKING
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
AuthenticationScheme = "ID4DemoCloud",
DisplayName = "Login with ID4DemoCloud",
SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme,
SignOutScheme = IdentityServerConstants.SignoutScheme,
Authority = "https://demo.identityserver.io/",
ClientId = "implicit",
TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "role"
},
//Events = new OpenIdConnectEvents() { }
});
// NOT WORKING
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
AuthenticationScheme = "MySlaveIdentityServer1BasicAuth",
DisplayName = "Login with MySlaveIdentityServer1 Basic Auth",
SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme,
SignOutScheme = IdentityServerConstants.SignoutScheme,
Authority = "http://localhost:5100/",
ClientId = "MyMasterIdentityServer0",
ClientSecret = "secret",
RequireHttpsMetadata = false,
//TokenValidationParameters = new TokenValidationParameters
//{
// NameClaimType = "name",
// RoleClaimType = "role"
//},
});
Basic Auth Конфигурация сервера клиентского
public static class Clients
{
public static IEnumerable<Client> GetClients()
{
return new[]
{
new Client
{
ClientId = "MyMasterIdentityServer0",
ClientName = "My Master IdentityServer 0",
ClientSecrets = new List<Secret> { new Secret("secret".Sha256()) },
AllowedGrantTypes = GrantTypes.Implicit,
AllowedScopes = new List<string>
{
StandardScopes.OpenId,
StandardScopes.Profile
},
RequireConsent = false,
AllowOfflineAccess = false,
RedirectUris = new [] { "http://localhost:5000/signin-oidc" }
}
};
}
}
Все провайдеры аутентификации работают отлично, за исключением внутренне развернутых MySlaveIdentityServers 1, 2, 3 и 4 ... даже сервер Облако Demo Идентичность работает нормально. Может ли кто-нибудь дать мне какие-либо советы или предложения?
После звонка с Тревисом он выяснил, что схемы аутентификации в моих конфигурациях переопределяют друг друга и вызывают ошибку. Я опубликую обновление до более полного заявления о проблеме и решения в ближайшее время –