Сеансы сервера (режим IsReference) для Thinktecture Id.Srv. 3

С исх. на brockallen.com/2013/02/21/server-side-session-token-caching-in-wif-and-thinktecture-identitymodel

Я хочу использовать сеансы на стороне сервера с Id.Srv. 3 и создали реализацию ITokenCacheRepository с использованием Redis Cache в качестве хранилища сеансов.

Помимо реализации, я добавил следующий код в Global.asax Id.Srv. проект:

    protected void Application_Start(object sender, EventArgs e)
    {
        PassiveSessionConfiguration.ConfigureSessionCache(new SessionManagerCache(sessionManager));
    }

    public override void Init()
    {
        PassiveModuleConfiguration.CacheSessionsOnServer();
    }

где SessionManagerCache - это реализация ITokenCacheRepository, а sessionManager - это Redis Cache, используемый внутри нее.

У меня также есть эти configSections в web.Config -

<section name="system.identityModel" ...
<section name="system.identityModel.services" ...

а также раздел system.identityModel -

<system.identityModel>
<identityConfiguration>
    <claimsAuthorizationManager type="Identity.TestServer.AuthorizationManager, Identity.TestServer" />
</identityConfiguration>
</system.identityModel>

где AuthorizationManager - это производное ClaimsAuthorizationManager.

При запуске из CacheSessionsOnServer () возникает это исключение -

выбросить новое исключение ArgumentException ("SessionAuthenticationModule имеет значение null");

Я проверил значение FederatedAuthentication.SessionAuthenticationModule в Init (), и оно всегда равно нулю.

В этом комментарии говорится, что Id.Srv. использует SAM для отслеживания сеансов входа в систему -

https://github.com/IdentityModel/Thinktecture.IdentityModel.45/issues/118#issuecomment-24202385

Однако после проверки Id.Srv. код, это верно для Id.Srv. 2.

В Id.Srv. 3, аутентификация файлов cookie. похоже, использовался - https://github.com/IdentityServer/IdentityServer3/blob/master/source/Core/Configuration/AppBuilderExtensions/ConfigureCookieAuthenticationExtension.cs#L49

В CookieAuthenticationOptions есть возможность настроить SessionStore на использование настраиваемого хранилища сеансов. Однако, похоже, нет возможности установить SessionStore для Id.Srv. поскольку это создаются локальные переменные.

Кто-нибудь может предложить, как решить указанную выше ошибку. Я упускаю что-то очевидное?

Можно ли использовать Thinktecture.IdentityModel для сеансов сервера с Id.Srv. 3? Если нет, каковы альтернативы реализации сеансов сервера (режим IsReference) для сеансов входа в систему с использованием Id.Srv. 3?

Любая помощь могла бы быть полезна.


person BK Tarun V Dalwani    schedule 29.07.2015    source источник


Ответы (1)


Для тех, кто наткнулся на это, Брок Аллен пояснил:

"Поскольку IdSvr 3 не использует SAM, вы не можете использовать эту функцию из IdentityModel. IdSvr3, поскольку он основан на OWIN, использует новое промежуточное ПО для аутентификации cookie для сеансов аутентификации. Эти файлы cookie, как правило, намного меньше, чем старые файлы cookie SAM, поэтому необходимость в кешировании меньше "

person BK Tarun V Dalwani    schedule 04.08.2015