我遇到了WIF ClaimsAuthenticationManager的一个奇怪问题。我已经在web.config文件中注册了ClaimsAuthenticationManager的自定义实现:
<identityConfiguration>
<claimsAuthenticationManager type="<namespace>.CustomClaimsTransformer,<assembly>" />
<claimsAuthorizationManager type="<namespace>.CustomAuthorisationManager,<assembly>" />
....
当我在IISExpress中运行应用程序时,会调用ClaimsAuthenticationManager的authenticate方法。但是,自从我在IIS 7.5上部署应用程序以来,它一直没有被调用。
是否需要进行任何配置?
答案 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。