Истечение срока действия cookie в ASP NET Core Authentication с использованием Azure AD OpenIdConnect и настраиваемого промежуточного программного обеспечения

В настоящее время я пытаюсь установить тайм-аут для маркера 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?

Есть ли у кого-нибудь представление о том, как этого добиться?


person James Mason    schedule 30.05.2016    source источник
comment
Примечание. Ссылка https://github.com/aspnet/Security/tree/dev/samples/OpenIdConnect.AzureAdSample возвращает 404.   -  person Exegesis    schedule 03.01.2021


Ответы (1)


в UseOpenIdConnectAuthentication наборе UseTokenLifetime = false

person Gary W    schedule 01.09.2017