根据文档,这两个模块都将用于创建 IClaimsPrincipal 的实例。我不明白为什么 WIF 费心使用 2 个 HttpModules 而不是一个?抱歉,我是 WIF 的新手
问问题
2589 次
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 回答