我的自定义ClaimsAuthorizationManager使用标准配置文件设置工作,但我想在我的实现中注入业务层服务,我无法弄明白。
<system.identityModel>
<identityConfiguration>
<claimsAuthorizationManager
type="Authentication.AuthorizationManager, Assembly" />
<claimsAuthenticationManager
type="Authentication.ClaimsTransformer, Assembly" />
</identityConfiguration>
<system.identityModel>
我尝试使用静态FederatedAuthentication类手动设置它,但没有任何乐趣。 ClaimsAuthorizationModule
始终为空。
FederatedAuthentication.ClaimsAuthorizationModule.ClaimsAuthorizationManager = DependencyConfig.Container.Resolve<ClaimsAuthorizationManager>();
我尝试过这个问题的答案,试图确保模块已加载......
FederatedAuthentication.WSFederationAuthenticationModule is null at runtime
......但它们没有效果。我也想知道那些信息是否过时了,因为我的应用程序中已经有来自System.IdentityModel程序集的相同名称的模块。
我正在使用Thinktecture IdentityModel,但我无法在那里找到解决我问题的任何地方。这个问题似乎暗示了它,但没有给我一个解决方案。 https://github.com/thinktecture/Thinktecture.IdentityModel/issues/9
我已使用null ClaimsAuthorizationModule解决了这个问题,答案已过时,我需要使用System.IdentityModel.Services程序集中的声明auth模块。现在我可以注入ClaimsAuthManager但是没有调用CheckAccess。
答案 0 :(得分:2)
您可以处理的事件 - FederatedAuthentication.ServiceConfigurationCreated。这允许以编程方式设置声明授权管理器。
答案 1 :(得分:1)
我为了单元测试而尝试了同样的事情。但也失败了。我认为花在它上面的时间是不值得的。只需在现场实例化业务服务,让它完成它的工作。