web.config

时间:2016-10-14 15:02:00

标签: asp.net-core asp.net-core-mvc wif claims-based-identity

我正在运行一个ASP.NET Core 1.0项目。当我将ClaimsPrinciplePermission属性添加到我的操作方法时,导航到具有该属性的任何操作方法时会出现以下错误。

  

类型' System.InvalidOperationException'的例外情况发生在   System.IdentityModel.Services.dll但未在用户代码中处理

     

其他信息:ID7024:ClaimsPrincipalPermission的使用   属性已被尝试,可能没有    配置部分定义,见内部   细节例外。还要确保一个ClaimsAuthorizationManager   元素在该部分下定义。

这是内部异常

  

ID7027:无法加载身份配置,因为没有    配置部分被发现。

这是我的web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->

  <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.identityModel.services>
    <federationConfiguration>
      <cookieHandler requireSsl="false" />
    </federationConfiguration>
  </system.identityModel.services>
  <system.identityModel>
    <identityConfiguration>
      <claimsAuthorizationManager type="wApp.ClaimManager, wApp" />
    </identityConfiguration>
  </system.identityModel>  

  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>




</configuration>

如您所见,我添加了所有必需的部分。相同的代码和配置适用于我的MVC 5项目以及我的Web Api项目。在Asp.Net核心项目中有什么不同的东西吗?

我还在Core 1.0 MVC项目中添加了所需的DLL引用,并在核心1.0 MVC项目下的App.config文件中复制了相同的配置部分。仍然得到同样的错误。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

ClaimsPrincipalPermission,WIF / System.IdentityModel根本不是.NET Core的一部分。我甚至惊讶于编译。

从评论中可以看出,您正在解析JWT,大概是使用JWT承载令牌中间件。

因此,ASP.NET Core中的所有身份都是ClaimsIdentities。您可以使用Simple claims based checks,或者更全面地使用code expressed policies,这样可以提供更多灵活性。