WSFederationAuthenticationModule v / s SessionAuthenticationModule

时间:2012-11-15 10:47:55

标签: asp.net wif

根据文档,这两个模块都将用于创建IClaimsPrincipal的实例。我不明白为什么WIF懒得使用2个HttpModules而不是一个?对不起,我是WIF新手

2 个答案:

答案 0 :(得分:5)

最大的区别在于WSFederationAuthenticationModule拦截请求并将重定向用户以由STS进行身份验证,而SessionAuthenticationModule使用WIF令牌cookie在后续请求中授权用户。

SessionAuthenticationModule首先在管道中触发,因此如果您已经拥有会话cookie(即,您已经过身份验证),会话模块将授予您访问权限。

MSDN documentation做了很好的描述。

答案 1 :(得分:4)

您不需要两者都在管道中拥有IClaimsPrincipal。你需要后者SessionAuthenticationModule。它负责将WIF cookie转换为主体对象(类似于FormsAuthenticationModule对表单cookie的处理)。

前者WSFederationAuthenticationModule仅负责从缩进提供者到您的应用程序的初始SAML帖子 - 该模块使用该帖子并发布WIF cookie。或者,您可以使用登录表单上的wif:FederatedPassiveSignIn控件来执行此操作。

当我编写支持WIF的应用程序时,我通常只有SAM模块,而且我使用登录控件来发布cookie。