выйти из всех других приложений, которые используют тот же сервер идентификации - PullRequest
0 голосов
/ 20 января 2020

У меня проект IdentityServer в другом решении, а приложения MVC (. net core) и Angular (ver 7.0) в другом решении.

Решение IdentityServer:

  1. Проект сервера удостоверений с несколькими клиентами
  2. Промежуточный портал, на котором отображаются ссылки на приложения различных типов (все приложения используют одну и ту же идентификационную информацию).

Сейчас Что я должен разработать, это когда пользователь вышел из приложения angular или MVC, он должен выполнить следующую последовательность действий:

  1. Выход из клиентских приложений (angular или mvc) и перенаправьте его на страницу входа в систему.
  2. После того, как пользователь снова войдет в систему, на нем должна появиться промежуточная страница портала, на которой есть несколько ссылок на приложения, и пользователь может щелкнуть любую из них и перейти.

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

  1. W hen Angular приложение имеет выход -> его перенаправление на промежуточный адрес портала / signout-callback-oid c.
  2. Когда MVC add имеет выход -> оно перенаправляет на промежуточную страницу портала.

Используется URL: (Примеры)

Сервер идентификации - idserver.azurewebsites. net

Промежуточный адрес портала - idserver.azurewebsites.net/portal

Angular app - app-somerandomname.azurewebsites. net

MVC app - app-admin-somerandomname.azurewebsites.net/

------- ------- КОНФИГУРАЦИИ --------------------

new Client
                {
                    ClientId = "mvc-client",
                    ClientName = "MVC Portal",
                    AllowedGrantTypes = GrantTypes.HybridAndClientCredentials,
                    RequireConsent = false,
                    RedirectUris = { "app-admin-somerandomname.azurewebsites.net/signin-oidc" },
                    PostLogoutRedirectUris = { "app-admin-somerandomname.azurewebsites.net/signout-callback-oidc" },
                    AllowedCorsOrigins = "app-admin-somerandomname.azurewebsites.net/signin-oidc",
                    ClientSecrets =
                    {
                        new Secret("DDDD".Sha256())
                    },
                    AllowedScopes =
                    {
                        IdentityServerConstants.StandardScopes.OpenId,
                        IdentityServerConstants.StandardScopes.Profile,
                        IdentityServerConstants.StandardScopes.Address,
                        "roles",
                        "my-api"
                    },
                    AllowAccessTokensViaBrowser = true,
                    AllowOfflineAccess = true,
                    AlwaysIncludeUserClaimsInIdToken=true
                },


                new Client
                {
                    ClientId = "ng-client",
                    ClientName = "Angular Front-end",
                    AllowedGrantTypes = GrantTypes.Implicit,
                    AllowAccessTokensViaBrowser = true,
                    RequireConsent = false,
                    RedirectUris =
                    {
                        $"{app-somerandomname.azurewebsites.net}/assets/oidc-login-redirect.html",
                        $"{app-somerandomname.azurewebsites.net}/assets/silent-redirect.html"
                    },
                    PostLogoutRedirectUris = {"idserver.azurewebsites.net/portal"},
                    AllowedCorsOrigins = {"app-somerandomname.azurewebsites.net"},
                    AllowedScopes =
                    {
                        IdentityServerConstants.StandardScopes.OpenId,
                        IdentityServerConstants.StandardScopes.Profile,
                        "my-webapi"
                    }
                },


        ////Signout method in MVC
        public async Task Logout()
        {
            await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
            await HttpContext.SignOutAsync("oidc");
        }

        ////angular signout function
        logout(): Promise<any> {
                   return this.userManager.signoutRedirect();
         }

Вопрос : почему портал приложение не выходит из системы, даже если я выхожу из других приложений (mvc или angular) из-за изменения имени домена или какой-либо другой проблемы конфигурации?

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