将身份验证添加到 WCF 中的安全标头以使用 Metro WSIT 服务

发布于 2024-12-07 21:12:32 字数 375 浏览 1 评论 0原文

我使用这种简单的方法来附加用户名和密码到 SOAP 请求标头。这在 Java 边界内工作得很好,但我希望能够使用我的 WCF 客户端调用它。我该怎么做?

我已尝试以下代码,但它不包含标头中的凭据:

wsClient.ClientCredentials.UserName.UserName = "Hello";
wsClient.ClientCredentials.UserName.Password = "World";

提前致谢!

I use this simple way to attach username and password to the SOAP request header. This works fine inside Java boundaries, but I want to be able to call it with my WCF client. How do I do this?

I've tried the following code, but it does not include the credentials in the header:

wsClient.ClientCredentials.UserName.UserName = "Hello";
wsClient.ClientCredentials.UserName.Password = "World";

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝天白云 2024-12-14 21:12:32

这是非常糟糕的非标准化方式。它使用自定义 HTTP 标头,因此您不能指望内置的 WCF 机制会神奇地支持这种方法。 WCF 如何知道您想要将自定义非标准 HTTP 标头添加到 HTTP 请求(而不是 SOAP 标头)?

使用这个:

var proxy = new YourServiceClient();
using (var scope = new OperationContextScope(proxy.InnerChannel))
{
    var prop = new HttpRequestMessageProperty();
    prop.Headers.Add("UserName", "Hello");
    prop.Headers.Add("Password", "World");

    OperationContext context = OperationContext.Current;
    context.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = prop;

    proxy.CallYourOperation();
}

That is quite awful non-standardized way. It uses custom HTTP Headers so you cannot expect that built in WCF mechanism will magically support such approach. How should WCF know that you want to add custom non-standard HTTP header to HTTP request (not SOAP header)?

Use this:

var proxy = new YourServiceClient();
using (var scope = new OperationContextScope(proxy.InnerChannel))
{
    var prop = new HttpRequestMessageProperty();
    prop.Headers.Add("UserName", "Hello");
    prop.Headers.Add("Password", "World");

    OperationContext context = OperationContext.Current;
    context.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = prop;

    proxy.CallYourOperation();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文