2

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

4

2 回答 2

5

最大的区别在于 WSFederationAuthenticationModule 拦截请求并将用户重定向到 STS 进行身份验证,而 SessionAuthenticationModule 使用 WIF-token cookie 来授权用户对后续请求。

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

MSDN 文档很好地描述了这一点。

于 2012-11-15T13:53:08.117 回答
4

您不需要两者都IClaimsPrincipal在管道中。你需要后者,SessionAuthenticationModule. 它负责将 WIF cookie 转换为主体对象(类似于 FormsAuthenticationModule 对表单 cookie 所做的事情)。

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

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

于 2012-11-15T14:44:33.913 回答