我有以下组件: WPF应用程序, Identity Server, WCF Web服务,
WPF应用程序使用WebBrowser控件使用WS-Federation使用Thintecture Identity Server进行身份验证。 Identity Server已启用Home Realm Discovery并允许使用Facebook,Live ID和Google进行身份验证。身份验证后,我收到ReqquestSecurityTokenResponse消息,我将其转换为SecurityToken。
获得此SecurityToken后,我想调用WebService。我想我需要创建由Thintecture Identity Server再次发布的ActAsToken,但我无法配置它。
var serviceAddress = "http://localhost:7397/Service1.svc";
var token3 = token2.ToSecurityToken();
var binding = new WS2007FederationHttpBinding(WSFederationHttpSecurityMode.Message);
binding.Security.Message.IssuedKeyType = System.IdentityModel.Tokens.SecurityKeyType.SymmetricKey;
binding.Security.Message.IssuerAddress = new EndpointAddress("https://dev3.example.com/Identity/issue/wsfed");
binding.Security.Message.IssuerBinding = new WS2007HttpBinding();
var factory = new ChannelFactory<IService1Channel>(binding,
new EndpointAddress(
new Uri(serviceAddress),
new DnsEndpointIdentity("dev3.example.com")));
factory.Credentials.SupportInteractive = false;
var proxy = factory.CreateChannelWithActAsToken(token3);
{
try
{
var output = proxy.GetData(1);
MessageBox.Show(output);
proxy.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
但我得到例外。
使用身份和访问权限配置WebService ... VS扩展名。
这种情况可能吗?
答案 0 :(得分:0)
您不需要ActAs - 您可以使用CreateChannelWithIssuedToken方法来创建WCF代理。
您还需要在WCF服务和客户端(而不是SymmetricKey)上配置承载密钥。