В настоящее время у меня возникла проблема в производственной среде с моей реализацией сервера удостоверений 4.
Когда я выполняю вход в систему, меня перенаправляют на сервер идентификации, и я могу проходить аутентификацию без проблем.
Моя проблема возникает, когда я пытаюсь выйти из системы. Я перенаправлен на сервер идентификации на конечной точке «connect / endsession», и возвращается 404.
Я даже пробовал со всеми браузерами, все та же проблема.
производство: MS server 2012, iis 8 и .net core 2.1
Вот несколько примеров кода:
При запуске моего клиента:
services.AddAuthentication(option => {
option.DefaultScheme = "Cookies";
option.DefaultChallengeScheme = "oidc";
}).AddCookie("Cookies")
.AddOpenIdConnect("oidc", options => {
options.SignInScheme = "Cookies";
options.Authority = Configuration["Authentication:Authority"]; // identity.example.com
options.RequireHttpsMetadata = false;
options.ClientId = Configuration["Authentication:ClientId"]; //example.mvc
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.ClientSecret = Configuration["Authentication:ClientSecret"] //!@examplepassword@! ;
});
в контроллере учетной записи у меня есть этот метод выхода из системы
public async Task Logout()
{
await HttpContext.SignOutAsync("Cookies");
await HttpContext.SignOutAsync("oidc");
}
На сервере идентификации
Моя реализация магазина клиента извлекает объект клиента из файла json и правильно отображает его, я знаю, что этот бит работает.
{
"Enable": true,
"ClientId": "example.mvc",
"ClientName": "example enterprise ",
"RedirectUris": [ "http://www.example.com/signin-oidc" ],
"PostLogoutRedirectUris": [ "http://www.example.com/signout-callback-oidc" ],
"AllowAccessTokensViaBrowser": true,
"RequireConsent": false,
"ClientSecret": "!@examplepassword@!",
"AllowedScopes": [ "openid", "profile", "email" ],
"GrantType": "implicitandclientcredentials"
}
Когда вы нажимаете на кнопку «Выйти», я ожидаю, что вы выйдете из системы навсегда. Но по какой-то причине я получаю ошибку 404.
Не уверен, должен ли я добавить контроллер, который имеет [Route ("/ signout-callback-oidc")], но по какой-то причине я просто не могу заставить выход из системы работать в производстве.
достаточно забавно, он работает локально на моем компьютере, я пытаюсь отладить его.