При выходе пользователя из приложения мы хотели бы знать, какой метод аутентификации использовался для входа в систему. Если, например, использовалась Entra, мы ' Я хотел бы отправить пользователя на https://login.microsoftonline.com/commo ... 2.0/logout, чтобы он правильно вышел из поставщика идентификаторов.
Я подумал, что хорошей идеей было бы сохранить дополнительное утверждение в файле cookie при входе в систему. Я попытался добавить для этого следующий код:
Код: Выделить всё
services.AddAuthentication()
.AddMicrosoftIdentityWebApp(options =>
{
options.Instance = "https://login.microsoftonline.com";
options.TenantId = "common";
options.ClientId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
options.ClientSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
options.Scope.Add("email");
options.Events.OnTokenValidated = async context =>
{
var claim = new Claim(ClaimTypes.AuthenticationMethod, "Microsoft");
var claimsIdentity = context.Principal.Identity as ClaimsIdentity;
claimsIdentity.AddClaim(claim);
await Task.CompletedTask;
};
}, openIdConnectScheme: "Microsoft", cookieScheme: null);
Код: Выделить всё
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
{
return RedirectToAction(nameof(Login));
}
// Sign in the user with this external login provider if the user already has a login.
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false, bypassTwoFactor: true);
if (result.Succeeded)
{
Код: Выделить всё
var scheme = User.FindFirstValue(ClaimTypes.AuthenticationMethod);
// Make some decisions based on scheme....
Я делаю что-то не так? Возможно, я все делаю неправильно.
Буду благодарен за любые подсказки.
Подробнее здесь: https://stackoverflow.com/questions/784 ... apted-in-a
Мобильная версия