【问题标题】:WSFederationAuthenticationModule v/s SessionAuthenticationModuleWSFederationAuthenticationModule v/s SessionAuthenticationModule
【发布时间】:2012-11-03 22:59:19
【问题描述】:

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

【问题讨论】:

    标签: asp.net wif


    【解决方案1】:

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

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

    MSDN documentation 很好地描述了这一点。

    【讨论】:

    • 你不觉得一个HttpModule就够了吗?
    • 我没有设计它,所以我不能告诉你为什么决定将它分成两个不同的模块。然而,每一个都有不同的用途,并且它允许更多的可扩展性。
    【解决方案2】:

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

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

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

    【讨论】:

    猜你喜欢
    • 2015-09-13
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多