不调用ClaimsAuthenticationManager

时间:2013-12-06 15:00:15

标签: asp.net iis iis-7.5 wif claims-based-identity

我遇到了WIF ClaimsAuthenticationManager的一个奇怪问题。我已经在web.config文件中注册了ClaimsAuthenticationManager的自定义实现:

<identityConfiguration>
  <claimsAuthenticationManager type="<namespace>.CustomClaimsTransformer,<assembly>" />
  <claimsAuthorizationManager type="<namespace>.CustomAuthorisationManager,<assembly>" />
....

当我在IISExpress中运行应用程序时,会调用ClaimsAuthenticationManager的authenticate方法。但是,自从我在IIS 7.5上部署应用程序以来,它一直没有被调用。

是否需要进行任何配置?

3 个答案:

答案 0 :(得分:3)

在web.config的system.webserver部分,您是否设置了ClaimsAuthorizationModule,

例如

<add name="ClaimsAuthorizationModule" type="Microsoft.IdentityModel.Web.ClaimsAuthorizationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

答案 1 :(得分:2)

对于.NET 4.5,您必须添加:

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

答案 2 :(得分:2)

不会自动调用ClaimsAuthenticationManager。除非他们使用WS-Federation,否则需要一个管道代码。

您可以在HttpApplication的PostAuthenticateRequest事件处理程序中执行此操作。

一个很好的例子位于http://github.com/thinktecture/Thinktecture.IdentityModel.45项目中。搜索调用它的ClaimsAuthenticationHttpModule.cs。