Ядро dotnet openidconnect identityserver4 прерывает выход из системы - PullRequest
0 голосов
/ 05 марта 2019

У меня есть простое основное приложение dotnet, использующее identitysever4 для аутентификации. Логин работает нормально. Выход из системы работает частично, пока я не попытаюсь добавить SignedOutCallbackPath. Я добавил в домашний контроллер метод logoutcomplete. Я могу вызвать этот метод в браузере так: http://localhost:port/home/logoutcomplete. Затем я добавляю options.SignedOutCallbackPath = signatureOutCallbackPath; в приложение, а затем запустите приложение. затем попытайтесь вернуться http://localhost:port/home/logoutcomplete. Возвращает 200, но нет просмотра. Он также не входит в метод контроллера. Настроить сервисы так:

services.AddAuthentication(options =>
        {
            options.DefaultScheme = "Cookies";
            options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
        .AddCookie("Cookies")
        .AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
        {
            options.SaveTokens = true;
            options.ClientId = clientId;
            options.RequireHttpsMetadata = false;
            options.Authority = metadataAddress;

            //options.SignedOutCallbackPath = signedOutCallbackPath;
            //options.SignedOutRedirectUri = Wtrealm + postLogoutUrl;
            // Wtrealm is the app's identifier in the Active Directory instance.
            // For ADFS, use the relying party's identifier, its WS-Federation Passive protocol URL:
            //options.Wtrealm = "https://localhost:44321/";
            options.Events.OnRedirectToIdentityProvider = onRedirectToIdentityProvider;
            //options.Events.OnRedirectToIdentityProviderForSignOut = onRedirectToIdentityProviderForSignOut;

            options.Events.OnRemoteFailure = remoteAuthFail;

            options.Scope.Add("openid");
            options.Scope.Add("profile");
            options.Scope.Add("email");

            //options.Scope.Add("role");

        });              Services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

это метод настройки

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();

        app.UseAuthentication();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

Редактировать 1: Да, у меня есть перенаправление после выхода из системы, настроенное на контроллер, о котором я упоминал. Вот общий вид вкладки сети в chrome после выполнения шага 1

  1. Я нажимаю на ссылку выхода из системы в клиентском приложении.
  2. Контроллер выхода обрабатывает это.
  3. Он выводит меня из приложения и перенаправляет меня на процесс выхода из ID сервера.
  4. Идентификация сервера называется endsesssion. Он перенаправляет на учетную запись сервера ID / метод выхода из системы.
  5. Возвращает 302 на мою страницу postlogouturl в моем клиенте. Вот где это должно остановиться, и я был бы очень счастлив.
  6. Но ВМЕСТО я получаю 302 от этого места назначения после выхода из журнала.
  7. и он отправляет меня на домашнюю страницу клиента. у которого есть проблема в коде для ID сервера для входа в систему.

    Har файл слишком для публикации, но вот выборочная версия вкладки сети в хром

Звоните 1: https://localhost:44321/Account/Logout", {"credentials": "include", "headers": {"accept": "text / html, application / xhtml + xml, application / xml; q = 0,9, image / webp, image / apng , / ; д = 0,8" , "Accept-Language": "EN-US, ан; д = 0,9", "кэш-контроль": "нет кэша", "прагма": "нет -cache " "обновить-небезопасные-запросов": "1"}, "реферер":" https://localhost:44321/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"}

Звоните 2: https://localhost:5001/connect/endsession?post_logout_redirect_uri=https%3A%2F%2Flocalhost%3A44321%2FAccount%2FCompleteSignout&id_token_hint=eyJhbGciOiJSUzI1NiIsImtpZCI6IkZGQzU0RUYzRjlCODYzMUVDQTMyQThERUZDMjM1QjJFMTAzMTIwMjgiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJfOFZPOF9tNFl4N0tNcWplX0NOYkxoQXhJQ2cifQ.eyJuYmYiOjE1NTE5Njg4OTgsImV4cCI6MTU1MTk2OTE5OCwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMSIsImF1ZCI6Ijc3NmFlNmMzLWMyNzMtNGU4Yy05ZjlhLTE4ZTM5NDA1Y2M3ZCIsIm5vbmNlIjoiNjM2ODc1NjU2ODI5Mzk3NTAzLlpUTTBNemt5TVdFdE1tRTVNQzAwT1dGa0xXSXhNVFF0WldZMU9EYzVPVEl5WWpreE5qZGhPR1l6TVRNdE9UZzROUzAwTnpZekxXRXlNVFl0T0RObE9EVXdaalZpWlRreiIsImlhdCI6MTU1MTk2ODg5OCwiYXRfaGFzaCI6IkJOSWdjRjYwUTd3RUpUbE1tNzd5amciLCJzaWQiOiI3OGY3NmZiODg2MjNiN2M3MDU0N2FlMTkyNmFiMjEzMCIsInN1YiI6ImU4ODdjMDlkLTZjMWItNDNiYS1iN2ZhLTZkZjVkZjZmYjg2YiIsImF1dGhfdGltZSI6MTU1MTk2ODg5MiwiaWRwIjoibG9jYWwiLCJhbXIiOlsicHdkIl19.rykZoW4oBhC8FB-6plAu8tlnsi9kqp4Ij7aSc3GahSngXQZTFR6thStpnQDB5AGvr3mTg9IYkHmd_H5Q6KpMXLCvP8icfIoPo0F82Hy5m9R1bHCr-2j3nz3-KKtD63-TAWJdH291v9ob5u2LDxeV3kax0oI-2_jlQmaR4FvKoEIOLTv3O07gJ7gGOqTMUXyxgPe8leTKVMsibG4LyIIeM0CbSSHA7cuEOu8VaCHLHh4mewPprmvcAXqRtjksT5SdlcuySt8Jm9j0u03qQV9XcXaf4XVE8vMdBgwP2dCjz4F7CYwJNRlZIGiTkVbFy1pRSJx9YNHyM-zMe3jvk9a11w&state=CfDJ8IkQZhXHRoVImqJIMbA3AwywYZQb1BcuwxT_DXXCkTLUmtShNjh8kb-IwB-Xdt3k-GOwwhKn2NFKH0e9YNp7QQBa65K6buhh-2ndhP6RsoIzOokn2jibJVRALgCTgGDHS_ubXnpUUGQlteboyzGPAWHQIny6XUv6jPS-BLpd6nuU&x-client-SKU=ID_NETSTANDARD2_0&x-client-ver=5.3.0.0", {"credentials": "include", "headers": {"accept": "text / html, application / xhtml + xml, application / xml; q = 0,9, image / webp, image / apng , / * тысяча сорок девять *; д = 0,8" , "Accept-Language": "EN-US, ан; д = 0,9", "кэш-контроль": "нет кэша", "прагма": "нет -cache " "обновить-небезопасные-запросов": "1"}, "реферер":" https://localhost:44321/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"}

Звоните 3: https://localhost:5001/Account/Logout?logoutId=CfDJ8IAxOFzkPDhIhK9DJ2tWINzkHt_UeEMkRoNAXbQ6CosU_t3gC5V0MujllavlrQsVycb_3pHr62VvRY1EQDgy-aZ7bqcwmgETDaB3Zp1RXLmb15CG-S8WN8EBThjPZQ5-4QqSWgXi7G44Bvp2hW1vlmfLtcyTQ-U2QbPpQOsoccnXqUM4JfI41fmIUlIC2DHCyLYAbHsTwvf1g_twwr0Ed914NInq-35IoLEWjIxoDNeFfSJJoxasEl9klvK_1EM_hz2GTLMRP5s46jtuMSoebvG_EVwO9hFxRGNg2kS8llFqx2zjSjFqeqowTPv7yK3im7IHFVqCJWVvyOHXH7XKCddUSfH5SNQ1hf6I3Ag96G7BRgyWwFM_c_t560V5ihQXkQ3HT0JIyF5rbh5tFC370XtqPFzz5jFB7XOe6YveXnCCk3EPpRS9Ll7DCMCABnd5uLmh9i0WtZlVg_LA9KOXcy1x97VUqiMDxqW8h8ahM3YKz0UCnvvyGGM9TV0Cv-7RCqcEo9sJyDSYjQzCV6ZqyXylaaqftAyCTKaBlC3umI9Y-_CQw_7U86uMu8c7zvxiwcGj4ixJcKHVGmkV9x0G_F_DmrcBC1GJRlJR6jc-VBecK_PA24UiSk2Jjpgpa1CfZqXHAkEVNILzgKh2gGJU4gvqrTgpxGoQj5Hnz2Vl6Tadin6_w6RLRYZIz9Yd1F45Apkonntl8DwnrY6xzqLRFX3wQ7rkxQe_xWVZq-5oQCJ1QQFEHtVqtdvVHkDZFLVJXmQSF-S8yyxZn8WVE257iQCNHeVBSV8IjNT4HRHnGnsR15vMBpmOt7Co2UsHZPMY9dsajHfJtDrL9W4k4zIrKP7wScmdb9i8cdxZ8hjIr0Dfs_ZTswCuxgP-jZroKBCCOhJ9_k4K1lDYoAAKr09etztiwtFqMnq96O8-GtQYKVhZL9bYGSbVcLsm1ko_144vf0h5LdlkCcWUoP0fh0lOxwn80s9Gmtrend9jmuXDKZ_P", {"credentials": "include", "headers": {"accept": "text / html, application / xhtml + xml, application / xml; q = 0,9, image / webp, image / apng , * тысяча пятьдесят семь * / ; д = 0,8" , "Accept-Language": "EN-US, ан; д = 0,9", "кэш-контроль": "нет кэша", "прагма": "нет -cache " "обновить-небезопасные-запросов": "1"}, "реферер":" https://localhost:44321/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"}

Звоните 4: https://localhost:44321/Account/CompleteSignout?state=CfDJ8IkQZhXHRoVImqJIMbA3AwywYZQb1BcuwxT_DXXCkTLUmtShNjh8kb-IwB-Xdt3k-GOwwhKn2NFKH0e9YNp7QQBa65K6buhh-2ndhP6RsoIzOokn2jibJVRALgCTgGDHS_ubXnpUUGQlteboyzGPAWHQIny6XUv6jPS-BLpd6nuU", {"credentials": "include", "headers": {"accept": "text / html, application / xhtml + xml, application / xml; q = 0,9, image / webp, image / apng / ; д = 0,8" , "Accept-Language": "EN-US, ан; д = 0,9", "кэш-контроль": "нет кэша", "прагма": "нет -cache " "обновить-небезопасные-запросов": "1"}, "реферер":" https://localhost:44321/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"}

Звоните 5: https://localhost:44321/", {"credentials": "include", "headers": {"accept": "text / html, application / xhtml + xml, application / xml; q = 0,9, image / webp, image / apng , / ; д = 0,8" , "Accept-Language": "EN-US, ан; д = 0,9", "кэш-контроль": "нет кэша", "прагма": "нет -cache " "обновить-небезопасные-запросов": "1"}, "реферер":" https://localhost:44321/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"}

Звоните 6: https://localhost:5001/connect/authorize?client_id=776ae6c3-c273-4e8c-9f9a-18e39405cc7d&redirect_uri=https%3A%2F%2Flocalhost%3A44321%2Fsignin-oidc&response_type=code%20id_token&scope=openid%20profile%20email%20offline_access&response_mode=form_post&nonce=636875657052545628.OTAwYzMwMWYtNzRmMi00YzlhLWFhNzgtMjRmZjFkOTgxYzY3YTBiMzcxMWUtM2M5Mi00YWE1LTkwNDgtNjIwODZjNDMxMDhk&login_hint=user.name&state=CfDJ8IkQZhXHRoVImqJIMbA3AwzSzO3TsIn08Q4MFv1bS3bVSAI8e35pZwTGfspMlXdIf3-lejQgu5bHYbbBYbPaR7S_20VO-GTp97rGCnsGeeQEuOqEGpYSA6C4LUeGCEYPV0R113XvY6qxcupAklxj_SVSwR3YWXKl2b-vwpkB45q8txV0TOc8LMeKbajQYB6jzQI5wI6b_zqRaAb0NHLRc4pk6fdx9PyVDouuq8mtfhKGaF1R0bV5iY1v8jkF4MEspx3xmL1Z78ik4YzRv1cgT52OvUvHgrnq9XgGfB5SXwI_e16CkuNZEf2ltVH5ifK5cA&x-client-SKU=ID_NETSTANDARD2_0&x-client-ver=5.3.0.0", {"credentials": "include", "headers": {"accept": "text / html, application / xhtml + xml, application / xml; q = 0,9, image / webp, image / apng * один тысяча восемьдесят четыре * / * 1 085 *; д = 0,8" , "Accept-Language": "EN-US, ан; д = 0,9", "кэш-контроль": "нет кэша", "прагма": "нет -cache " "обновить-небезопасные-запросов": "1"}, "реферер":" https://localhost:44321/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"}

Звоните 7: https://localhost:5001/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3D776ae6c3-c273-4e8c-9f9a-18e39405cc7d%26redirect_uri%3Dhttps%253A%252F%252Flocalhost%253A44321%252Fsignin-oidc%26response_type%3Dcode%2520id_token%26scope%3Dopenid%2520profile%2520email%2520offline_access%26response_mode%3Dform_post%26nonce%3D636875657052545628.OTAwYzMwMWYtNzRmMi00YzlhLWFhNzgtMjRmZjFkOTgxYzY3YTBiMzcxMWUtM2M5Mi00YWE1LTkwNDgtNjIwODZjNDMxMDhk%26login_hint%3Duser.name%26state%3DCfDJ8IkQZhXHRoVImqJIMbA3AwzSzO3TsIn08Q4MFv1bS3bVSAI8e35pZwTGfspMlXdIf3-lejQgu5bHYbbBYbPaR7S_20VO-GTp97rGCnsGeeQEuOqEGpYSA6C4LUeGCEYPV0R113XvY6qxcupAklxj_SVSwR3YWXKl2b-vwpkB45q8txV0TOc8LMeKbajQYB6jzQI5wI6b_zqRaAb0NHLRc4pk6fdx9PyVDouuq8mtfhKGaF1R0bV5iY1v8jkF4MEspx3xmL1Z78ik4YzRv1cgT52OvUvHgrnq9XgGfB5SXwI_e16CkuNZEf2ltVH5ifK5cA%26x-client-SKU%3DID_NETSTANDARD2_0%26x-client-ver%3D5.3.0.0", {"credentials": "include", "headers": {"accept": "text / html, application / xhtml + xml, application / xml; q = 0,9, image / webp, image / apng / * тысяча девяносто-четырь *; д = 0,8" , "Accept-Language": "EN-US, ан; д = 0,9", "кэш-контроль": "нет кэша", "прагма": "нет -cache " "обновить-небезопасные-запросов": "1"}, "реферер":" https://localhost:44321/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"}

Звоните 8,9,10,11: (все вызовы css и js бесполезны для целей) https://localhost:5001/lib/bootstrap/css/bootstrap.css", {"credentials": "omit", "referrerPolicy": "no-referrer", "body": null, "method": "GET", "mode": "cors"} https://localhost:5001/css/site.css", {"credentials": "omit", "referrerPolicy": "no-referrer", "body": null, "method": "GET", "mode": "cors"} https://localhost:5001/icon.png",{"credentials": "omit", "referrerPolicy": "no-referrer", "body": null, "method": "GET", "mode": "cors"} https://localhost:5001/lib/jquery/jquery.js", {"credentials":" omit "," referrerPolicy ":" no-referrer "," body ": null," method ":" GET "," mode ":" cors "} https://localhost:5001/lib/bootstrap/js/bootstrap.js", {" credentials ":"опустить», "referrerPolicy": "нет-реферер", "тело": нулевой, "метод": "GET", "режим": "Корс"}

1 Ответ

1 голос
/ 06 марта 2019

Вы можете добавить следующий код в некоторый контроллер для запуска выхода:

public IActionResult Logout()
{
    return SignOut("Cookies", OpenIdConnectDefaults.AuthenticationScheme);
}

Это очистит локальный файл cookie и затем перенаправит его на IdentityServer. IdentityServer очистит свои куки и затем предоставит пользователю ссылку для возврата в приложение MVC.

Вот клиентская конфигурация в Identity Server:

new Client
{
    ClientId = "mvc",
    ClientName = "MVC Client",
    AllowedGrantTypes = GrantTypes.Implicit,


    RedirectUris           = { "http://localhost:64146/signin-oidc" },
    PostLogoutRedirectUris = { "http://localhost:64146/signout-callback-oidc" },

    AllowedScopes =
    {
        IdentityServerConstants.StandardScopes.OpenId,
        IdentityServerConstants.StandardScopes.Profile,
        //Another scopes
    },

    AllowOfflineAccess = true
}

И вы можете установить options.SignedOutCallbackPath, чтобы сделать перенаправление пользователя после выхода из OIDC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...