与参考。到 brockallen.com/2013/02/21/server-side-session-token-caching-in-wif-and-thinktecture-identitymodel
我想对Id.Srv 使用服务器端会话。3并使用Redis 缓存作为会话存储创建了ITokenCacheRepository的实现。
除了实现之外,我还在 Id.Srv的Global.asax中添加了以下代码。项目:
protected void Application_Start(object sender, EventArgs e)
{
PassiveSessionConfiguration.ConfigureSessionCache(new SessionManagerCache(sessionManager));
}
public override void Init()
{
PassiveModuleConfiguration.CacheSessionsOnServer();
}
其中 SessionManagerCache 是 ITokenCacheRepository 实现,而 sessionManager 是其中使用的 Redis 缓存。
我在 web.Config 中也有这些configSections -
<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() 中抛出此异常 -
throw new ArgumentException("SessionAuthenticationModule is null");
我检查了 Init() 中 FederatedAuthentication.SessionAuthenticationModule 的值,它始终为空。
这条评论说 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 以使用自定义会话存储。但是似乎没有为 Id.Srv 设置 SessionStore 的选项。因为这些是正在创建的局部变量。
任何人都可以建议,如何解决上述错误。我错过了一些明显的东西吗?
Thinktecture.IdentityModel 能否用于与 Id.Srv 的服务器会话。3? 如果没有,使用 Id.Srv 为登录会话实现服务器会话(IsReference 模式)的替代方法是什么。3?
任何帮助将非常感激。