WIF:会话身份验证模块始终为空

本文关键字:模块 会话 身份验证 WIF | 更新日期: 2023-09-27 18:33:16

我正在尝试在我正在处理的 MVC 项目上设置 WIF,但无济于事。 我遇到的问题是FederatedAuthentication.SessionAuthenticationModule总是空的。 我在 configSections 下将以下行添加到 web.config 中:

<section name="system.identityModel"
    type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<section name="system.identityModel.services"
    type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />

我还尝试初始化模块:

<modules>
  <add name="SessionAuthenticationModule"
       type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       preCondition="managedHandler" />
</modules>

还是没有。 我通过 nuget 安装了 WIF。 我注意到大多数在线文档的 WIF 命名空间(如我上面发布的内容)是System.IdentityModel而我通过 nuget 拥有的命名空间是Microsoft.IdentityModel。 这会造成麻烦吗?

一些规格:

标准 MVC 4 项目

使用 Microsoft.IdentityModel.dll v3.5.0.0

WIF:会话身份验证模块始终为空

无需

使用 nuget 安装 WIF 4。 .Net Framework 4.5 内置了对此库的支持。你的 web.config 必须是这样的:

    <configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</configSections>

和:

<system.webServer>
<modules>
  <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
  <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</modules>
</system.webServer>

System.identitymodel.xxx 是 .Net 4.5 版本,如果 WIF 将所有内容合并到核心框架中。

Microsoft.identitymodel.xxx 是单独安装的 .NET 4 版本。