I have a requirement where-in my Silverlight application needs to connect to a WCF service to fetch data, through an intermediate WCF service, which is hosted in the same domain as the Silverlight. That is, the Silverlight is going to make a call to the Intermediate Service, which will attached the IssuedToken along with the request and send it to the main WCF client. The main WCF service would retrieve the claims from the Thread.Principal.
var binding = new WS2007FederationHttpBinding(WSFederationHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Message.EstablishSecurityContext = false;
var factory = new ChannelFactory<IMyService>(binding, new EndpointAddress("https://myservice.cloudapp.net:4432/MyService.svc"));
var channel = factory.CreateChannelActingAs(((ClaimsIdentity)((ClaimsPrincipal)HttpContext.Current.User).Identity).BootstrapToken);
var data = channel.GetData();
But this code piece fails. I am unable to find property documentation on how to achieve this. Can anyone please help me with this.
Thanks,
You need to:
1. authenticate opposite the ADFS STS service to obtain a SecurityToken
2. query your service with a channel using “CreateChannelWithIssuedToken”, along the lines of:
The code for GetToken will look as follows:
Hope this helps…