• 1000 Я хочу внедрить систему единого выхода для всего приложения. т.е. если я выхожу из одного, он должен принудительно вывести пользователя из других приложений. Практически это возможно, и Azure AD также поддерживает то же самое. Все остальные функции работают так, как ожидалось, такие как вход в систему, выход из системы, получение токенов, но я столкнулся с проблемой с функцией единого выхода. *
services.AddAuthentication(o =>
{
o.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
o.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie()
.AddOpenIdConnect(options => SetOpenIdConnectOptions(options, services));
private void SetOpenIdConnectOptions(OpenIdConnectOptions options, IServiceCollection services)
{
var __serviceProvider = services.BuildServiceProvider();
options.ClientId = Configuration["Authentication:AzureAd:ClientId"];
options.Authority = Configuration["Authentication:AzureAd:AADInstance"] + Configuration["Authentication:AzureAd:TenantId"];
options.CallbackPath = Configuration["Authentication:AzureAd:CallbackPath"];
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.ClientSecret = Configuration["Authentication:AzureAd:ClientSecret"];
options.SaveTokens = true;
options.Scope.Add("openid");
options.Scope.Add("offline_access");
options.Scope.Add("profile");
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name"
};
options.Events = new OpenIdConnectEvents
{
OnAuthorizationCodeReceived = async (context) =>
{
var code = context.ProtocolMessage.Code;
var identifier = context.Principal.Claims.First(item => item.Type == ClaimTypeLookup.ObjectIdentifier).Value;
options.SaveTokens = true;
},
};
}
[HttpGet]
public IActionResult SignOut()
{
var callbackUrl = Url.Action(nameof(SignedOut), "Account", values: null, protocol: Request.Scheme);
return SignOut(
new AuthenticationProperties { RedirectUri = callbackUrl },
CookieAuthenticationDefaults.AuthenticationScheme,
OpenIdConnectDefaults.AuthenticationScheme);
}
Кроме того, если я выйду из своей учетной записи office365, это не повлияет на мои приложения. Любая помощь будет оценена по достоинству!