В настоящее время я пытаюсь установить тайм-аут для маркера cookie / auth при аутентификации моего приложения .NET Core с помощью Azure AD через модель аутентификации OpenIdConnect.
Схема входа устанавливается в методе ConfigureServices следующим образом:
services.AddAuthentication(options => options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme);
Затем я настраиваю свою конфигурацию следующим образом:
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
CookieName = "MyCookie",
ExpireTimeSpan = TimeSpan.FromHours(2)
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions()
{
Authority = authorityUri.AbsoluteUri,
ClientId = azureOptions.ClientId,
ClientSecret = azureOptions.ClientSecret,
ResponseType = OpenIdConnectResponseTypes.CodeIdToken,
Events = new OpenIdConnectEvents()
{
OnAuthorizationCodeReceived = async context =>
{
await aAuthenticateMiddleware.OnAuthenticate(context, logger);
}
}
});
app.UseMiddleware<aAuthenticateMiddleware>();
Обратите внимание, что я не использую встроенную идентификацию (поскольку она не подходит для наших целей), а использую специальное промежуточное ПО.
На уровне промежуточного программного обеспечения я проверяю, аутентифицирован ли пользователь, и если нет, то выдается запрос:
var authenticationProperties = new AuthenticationProperties() { RedirectUri = context.Request.Path.Value ?? "/" };
authenticationProperties.AllowRefresh = false;
authenticationProperties.IssuedUtc = DateTime.Now;
authenticationProperties.ExpiresUtc = DateTime.Now.AddHours(2);
await context.Authentication.ChallengeAsync(
authenticationManager.IdentityProvider.AuthenticationScheme,
authenticationProperties,
ChallengeBehavior.Automatic
);
Все это работает нормально и правильно аутентифицирует пользователя и т. Д., Однако это выдает токен аутентификации (и файл cookie) с истечением 15 минут и игнорирует срок действия 2 часа, который я пытался установить.
Я имел в виду последние исходные примеры из GitHub из репозитория aspnet / security для примеров .... однако ни в одном из них ничего не упоминается о переопределении выданного срока действия по умолчанию.
https://github.com/aspnet/Security/tree/dev/samples/OpenIdConnect.AzureAdSample
Большинство найденных мною примеров по-прежнему ссылаются на старые библиотеки AspNet, а не на библиотеки AspNetCore.
В некоторых статьях предполагается, что использование SignInAsync с постоянным значением True позволяет учитывать ExpireTimeSpan, однако при его вызове возникает исключение «Неподдерживаемое исключение». Возможно, SignInAsync не поддерживается в Azure AD?
Есть ли у кого-нибудь представление о том, как этого добиться?
https://github.com/aspnet/Security/tree/dev/samples/OpenIdConnect.AzureAdSample
возвращает 404. - person Exegesis   schedule 03.01.2021