如何将安全令牌添加到向WCF服务发出的请求的标头中

本文关键字:请求 服务 WCF 安全 令牌 添加 | 更新日期: 2023-09-27 18:20:04

我已经实现了一个wcf服务,并将使用TCP进行传输。我想知道,如何将安全令牌(在我们的情况下为guid)粘贴到向wcf服务发出的请求的标头上?有人能在这方面帮助我吗?或者给我一些如何做到这一点的想法吗?或者,如果有什么具体的概念我应该学习?

如何将安全令牌添加到向WCF服务发出的请求的标头中

操作上下文提供传入和传出标头的集合,可用通过IncomingMessageHeaders和OutgoingMessageHeaders属性:

public sealed class OperationContext : ...
{
   public MessageHeaders IncomingMessageHeaders {get;}
   public MessageHeaders OutgoingMessageHeaders {get;}
   //More members
}

每个集合的类型都是MessageHeaders(即MessageHeader的集合对象):

public sealed class MessageHeaders : ...
{
   public void Add(MessageHeader header);
   public T GetHeader<T>(int index);
   public T GetHeader<T>(string name,string ns);
   //More members
}
public abstract class MessageHeader
{...}
public class MessageHeader<T>
{
   public MessageHeader();
   public MessageHeader(T content);
   public T Content {get;set;}
   public MessageHeader GetUntypedHeader(string name,string ns);
   //More members
}

您可以使用它将Guid传递到消息头中。

//Client code:
MessageHeader<Guid> tokenHeader = new MessageHeader<Guid>(someGuid);
MyContractClient proxy = new MyContractClient();
using(OperationContextScope contextScope =
                  new OperationContextScope(proxy.InnerChannel))
{
   OperationContext.Current.OutgoingMessageHeaders.Add(
                  tokenHeader .GetUntypedHeader("Guid","System"));
   proxy.MyMethod();
}
proxy.Close();

希望这将对您有所帮助。

如何:启用WCF身份验证服务http://msdn.microsoft.com/en-us/library/bb398990.aspx.

还有一个http://blog.adnanmasood.com/2010/04/29/step-by-step-guide-for-authenticating-wcf-service-with-username-and-password-over-ssl/

看看这里的链接MSDN,它向您展示了如何格式化安全标头格式化安全标头|安全协议此MSDN网站将解释您可以使用的协议类型和标头内容。

这就是微软安全头传递GUID 的样子

<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><u:Timestamp u:Id="_0">
  </u:Timestamp><o:UsernameToken u:Id="uuid-b96fbb3a-e646-4403-9473-2e5ffc733ff8-1">
</o:UsernameToken></o:Security>