我有一个ASP.NET应用程序正在调用WCF服务。在ASP.NET应用程序中,我调用ADFS来执行身份验证,并且可以在CurrentPrincipal中看到用户的所有声明。然后,我执行WCF服务(wsHttpBinding)的调用,但声明列表为空。
原因可能是什么?
如果我没有错的话,在WCF中有不同的方法来获得索赔。
Thread.CurrentPrincipal-简单易用,但需要在配置中进行一些设置,这是最容易被忽略的。
<behaviors>
<serviceBehaviors>
<behavior name="Test.Services.WifBehavior">
<serviceCredentials useIdentityConfiguration="true" />
<!---Set principalPermissionMode to always to pass the ClaimsIdentity info to the Thread.CurrentPrincipal-->
<serviceAuthorization principalPermissionMode="Always"/>
</behavior>
<serviceBehaviors>
</behaviors>
OperationContext.Current.CClaimsPrincipal-我不记得这是否需要一些配置,但我想您可以直接从调用的方法中获得它。
OperationContext.ServiceSecurityContext.AuthenticationContext.CClaimSets-为服务创建一个自定义授权管理器,需要在配置中添加。
请注意,我使用了Windows Identity Foundation(WIF)。