С помощью библиотеки OpenIdConnect ASP.NET, как мне хранить некоторые токены в cookie-файлах, а другие в памяти? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть веб-приложение ASP.NET Core MVC, которое является клиентом OpenID Connect.Он использует библиотеку Microsoft.AspNetCore.Authentication.OpenIdConnect, настроенную в моем Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication( o =>
        {
            o.DefaultScheme          = "Cookies";
            o.DefaultChallengeScheme = "oidc";
        } )
        .AddCookie( authenticationScheme: "Cookies", o => {

            o.Cookie.SameSite   = SameSiteMode.None; // https://stackoverflow.com/questions/51982626/cookies-with-a-samesite-policy-enforced-are-blocked-in-ios-12-for-sso-flows-invo
            o.Cookie.Expiration = new TimeSpan( days: 365, hours: 0, minutes: 0, seconds: 0 );
        } )
        .AddOpenIdConnect( authenticationScheme: "oidc", o =>
        {
            o.SignInScheme         = "Cookies";
            o.Authority            = "https://myauthority/";
            o.ClientId             = "my-mvc-application";
            o.ClientSecret         = "secret";

            o.Scope.Clear();
            o.Scope.Add( "openid" );
            o.Scope.Add( "offline_access" );
            o.Scope.Add( "api1" );
            o.Scope.Add( "my-id-claims" );

            o.ResponseType         = "code id_token";

            o.SaveTokens                    = true;
            o.GetClaimsFromUserInfoEndpoint = true; 
            o.RequireHttpsMetadata          = !this.isDevelopment;
        } );
}

Я хочу выполнить следующее:

  1. В моем приложении много претензий вid_token Идентификационный токен.Это приводит к тому, что размер файла cookie проверки подлинности файлов cookie ASP.NET превышает ограничение в 4096 байт.Я хочу хранить только этот токен в каком-то хранилище в памяти.
    • Я понимаю, что id_token не требуется для какой-либо аутентификации, поэтому, если у пользователя id_token выпадает память (например, перезапускается процесс ASP.NET или истекает срок действия кэша в памяти)тогда веб-приложение ASP.NET может повторно запросить id_token за кулисами, используя access_token.
  2. Но я хочу refresh_token и access_token продолжать храниться в файлах cookie пользователя, чтобы веб-приложение ASP.NET всегда имело к ним доступ.
    • Если они хранятся в резервном хранилище (например, ITicketStore), то, если хранилище билетов недоступно или отбрасывает свои сохраненные объекты, тогда пользователь не может пройти проверку подлинности с помощью своего билета, и они должны повторно пройти проверку подлинности.

Я смотрел на использование ITicketStore, однако это всегда заставляет ASP.NET использовать резервное хранилище для всех токенов, а не только refresh_tokenи access_token.

Я отмечаю, что Microsoft.AspNetCore.Authentication.OpenIdConnect устанавливает значения AuthenticationToken - если подкласс Microsoft.AspNetCore.Authentication.OpenIdConnect отвечает за хранение различных токенов в разных местах или если это происходит в другом месте вСистема токенов / билетов аутентификации в ASP.NET Core?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...