我想访问从WCF服务添加到UI层当前主体的自定义声明。 我有一个Web应用程序,一旦用户被STS认证,就会向CurrentPrincipal添加声明。这工作正常。WIF ChannelActingAs从WCF访问声明
protected void WSFederationAuthenticationModule_SecurityTokenValidated(object sender, SecurityTokenValidatedEventArgs args)
{
var customPrincipal = new ClaimsPrincipal(args.ClaimsPrincipal);
var service = ServiceLocator.Current.GetInstance<IServices>();
Thread.CurrentPrincipal = customPrincipal;
var result = service.GetPemissions();
foreach (var claim in result.Claims)
customPrincipal.Identities.First().Claims.Add(new Claim(claim.ClaimType, claim.Value));
Thread.CurrentPrincipal = customPrincipal;
args.ClaimsPrincipal = customPrincipal;
}
在某些时候,我想向WCF服务发出请求并将请求传递给服务。如果我使用传递给引导令牌的CreateChannelActingAS,我不会从上一步获得添加到主体的声明。
var claimsPrincipal = Thread.CurrentPrincipal as IClaimsPrincipal;
var securityToken = claimsPrincipal.Identities.First().BootstrapToken;
using (var channel = channelFactory.Value.CreateChannelActingAs(securityToken) as IClientChannel)
{
try
{
invocation.ReturnValue = invocation.Method.Invoke(channel, invocation.Arguments);
{ ...
有什么办法来构建在WCF服务ClaimsPrincipal,并有额外的要求会遇到是在UI层添加?我可以创建一个新的securityToken并将其通过频道传递,或者有更好的方法来处理这个问题吗?