我有以下组件:WPF 应用程序、身份服务器、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 是使用 Identity and access... VS 扩展配置的。
这种情况可能吗?