У меня проект IdentityServer в другом решении, а приложения MVC (. net core) и Angular (ver 7.0) в другом решении.
Решение IdentityServer:
- Проект сервера удостоверений с несколькими клиентами
- Промежуточный портал, на котором отображаются ссылки на приложения различных типов (все приложения используют одну и ту же идентификационную информацию).
Сейчас Что я должен разработать, это когда пользователь вышел из приложения angular или MVC, он должен выполнить следующую последовательность действий:
- Выход из клиентских приложений (angular или mvc) и перенаправьте его на страницу входа в систему.
- После того, как пользователь снова войдет в систему, на нем должна появиться промежуточная страница портала, на которой есть несколько ссылок на приложения, и пользователь может щелкнуть любую из них и перейти.
Вышеуказанные последовательности работают нормально в локальной среде, но при развертывании в среде разработки они не работают и ведут себя следующим образом:
- W hen Angular приложение имеет выход -> его перенаправление на промежуточный адрес портала / signout-callback-oid c.
- Когда 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) из-за изменения имени домена или какой-либо другой проблемы конфигурации?