2

我有以下组件: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 扩展配置的。

这种情况可能吗?

4

1 回答 1

0

您不需要 ActAs - 您可以使用 CreateChannelWithIssuedToken 方法来创建您的 WCF 代理。

You also need to configure bearer keys on the WCF service and client (instead of SymmetricKey).

于 2013-01-24T08:03:03.603 回答