W.I.F .:将IsSessionMode设置为true,似乎无法实现

问题描述 投票:10回答:4

我们在使用Safari(和Opera)时遇到了问题,从我读到的内容来看,FedAuth cookie太大了。

有一个“巧妙的技巧”可以解决此问题:“ WIF RTM向SessionAuthenticationModule IsSessionMode添加了一个属性。当翻转为true时,IsSessionMode的作用是确保SessionSecurityToken在整个会话期间都保留在缓存中,并生成一个cookie,该cookie仅包含会话标识符而不是会话标识符。会话本身的内容。“

我在global.asax中有此代码:

void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, Microsoft.IdentityModel.Web.SessionSecurityTokenCreatedEventArgs e)
{
    FederatedAuthentication.SessionAuthenticationModule.IsSessionMode = true;
}

问题很简单,“ FederatedAuthentication.SessionAuthenticationModule.IsSessionMode = true”永远不会运行,我不知道为什么。你呢??还是您知道如何使用“ PassiveSignInControl”将IsSessionMode设置为true?

http://social.msdn.microsoft.com/Forums/en/Geneva/thread/ea00ec3f-ebdf-427c-929f-d4a196650552http://blogs.msdn.com/b/vbertocci/archive/2010/05/26/your-fedauth-cookies-on-a-diet-issessionmode-true.aspx

摘自《 ProgrammingWindows®Identity Foundation编程》:“ SAM的一个有趣的属性是IsSessionMode。当设置为true时,IsSessionMode具有将会话的大部分存储在服务器端令牌缓存上而不是写入的效果Cookie中的所有内容。 Cookie本身将只包含一个小的上下文标识符,将用于在服务器上检索会话。不幸的是,在此版本的the92 Part II Windows Identity Foundation for Identity Developers中产品无法从配置文件设置IsSessionMode。您可以通过PassiveSignInControl的属性,或如下所示的global.asax文件中的代码(与上面的代码相同)“

c# web-applications wif
4个回答
7
投票

[旧线程,但我相信SessionSecurityTokenCreated是处理此事件的正确事件-测试了它,它在带有适当名称空间变体的“旧WIF”和NET 4.5下工作。


3
投票

您是否已经为SessionSecurityTokenCreated事件注册了事件处理程序?


0
投票

嗨,尝试一下:使用SecurityTokenValidated代替SessionSecurityTokenCreated事件


0
投票

要注意的一件事是如何处理WSFederationAuthenticationModule

© www.soinside.com 2019 - 2024. All rights reserved.