Я пытаюсь настроить базовое приложение ASP. NET для работы с проверкой подлинности AzureAD. Аутентификация работает, но я заметил, что у повара ie, который хранится для запоминания зарегистрированного пользователя, есть срок действия 'Session'. Из-за этого каждый раз, когда я закрываю и снова открываю браузер и перехожу на веб-страницу, меня перенаправляют на Azure для входа в систему. Это переадресация короткая, потому что установлен флажок «Держать меня во входе», но мне не нравится перенаправление l oop, и я хотел бы сделать его go прочь.
Я наткнулся на OpenIdConnectOptions.UseTokenLifetime , и, насколько я понимаю, если для него установлено значение true (что есть), то время жизни повара ie должно быть автоматически установлено на время жизни токена, который я получаю от AzureAD.
Однако, похоже, это не сработает, потому что я могу убедиться, что время жизни токена составляет около 1 часа, но время жизни повара ie установлено на Сеанс, поэтому срок его действия истечет, как только поскольку браузер закрыт.
Я знаю, что могу установить жестко заданное значение для срока действия повара ie, но я бы предпочел использовать то же значение, что и время жизни токена (используя UseTokenLifetime).
Почему время жизни повара ie не установлено равным времени жизни токена, хотя UseTokenLifetime имеет значение true *
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.TokenValidationParameters.NameClaimType = "name";
options.TokenValidationParameters.ValidateIssuer = false;
options.TokenValidationParameters.ValidateAudience = false;
options.UseTokenLifetime = true;
options.Events = new OpenIdConnectEvents
{
OnTokenValidated = ctx =>
{
var lifetime = (ctx.SecurityToken.ValidTo - ctx.SecurityToken.ValidFrom);
Console.WriteLine($"The token lifetime is {lifetime}"); // Prints out 01:05:00
return Task.CompletedTask;
}
};
});