以编程方式修改.NET 4.5中的WIF服务配置

时间:2012-12-14 15:39:45

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

在带有Ninject的MVC4应用程序中使用WIF和.NET 4.5

情况就是这样 - 我有一个名为ClaimsAuthenticationManager的自定义TenantAccessClaimsAuthenticationManager子类,可以进行一些声明转换。 TenantAccessClaimsAuthenticationManager需要将IRepository对象注入其中(使用ninject)。

WIF的.NET 4.5 impl建议我可以在web.config中粘贴我的自定义声明身份验证管理器 - 但是,这种方法只能通过no-args ctor实例化对象。

我的第二种方法是在web.config中没有任何内容,但是在App_start中,获取WIF配置的句柄并坚持TenantAccessClaimsAuthenticationManager中的RegisterServices < / p>

如何获取当前应用程序的WIF配置上下文的句柄? MSDN文档没有帮助。

修改:显然问题是onServiceConfigurationCreated事件不再可用。现在最好的方法是什么

1 个答案:

答案 0 :(得分:3)

活动仍然有效!

代码://System.IdentityModel.Services:4.0.0.0:b77a5c561934e089 / System.IdentityModel.Services.FederatedAuthentication /事件:FederationConfigurationCreated:System.EventHandler

更具体地说,该活动可在FederatedAuthentication.FederationConfigurationCreated获得。下面是一个示例实现:

FederatedAuthentication.FederationConfigurationCreated += (sender, e) => {
    e.FederationConfiguration.IdentityConfiguration.ClaimsAuthenticationManager = new MyCustomClaimsAuthenticationManager();
}

http://dunnry.com/blog/2012/12/20/SettingClaimsAuthenticationManagerProgrammaticallyInNET45.aspx上有一篇博客文章,提供了更多信息。