私はwcfサービスを実装しており、トランスポートにTCPを使用しています。私は、wcfサービスに対するリクエストのヘッダーにセキュリティトークン(私たちの場合はguid)を貼り付けるにはどうすればよいか知りたいと思っていましたか?誰もがこれで私を助けるか、私にこれを行うにはどのようなアイデアを与えることができますか?あるいは、私が学ばなければならない具体的なコンセプトがあれば?WCFサービスに対する要求のヘッダーにセキュリティトークンを追加する方法は?
答えて
がここにMSDNをこのリンクを見てみましょあり、それはセキュリティヘッダー をフォーマットする方法を示しますFormatting Security Headers | Security ProtocolsこのMSDNサイトでは、使用できるプロトコルの種類を説明し、ヘッダーの内容になります。
public sealed class OperationContext : ...
{
public MessageHeaders IncomingMessageHeaders {get;}
public MessageHeaders OutgoingMessageHeaders {get;}
//More members
}
各:
この
は、Microsoftのセキュリティヘッダーが<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>
操作コンテキストは、着信と発信のヘッダーのコレクションを提供していますGUID、IncomingMessageHeadersとOutgoingMessageHeadersプロパティを介して利用可能 を渡すように見えるものですコレクションは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();
ありがとうございました。私はこれが私を助けるかもしれないと思います:)。 – user1086046
wcfサービス自体からメッセージヘッダにguidを設定する必要がある場合、IDispatchMessageInspectorを実装するメソッドでそれを行うことはできますか? – user1086046
ヘッダーレイアウトをどのように表示するかの例を投稿できますか? – MethodMan
私はちょうどどのように見えるはずですか、私はちょうどセキュリティトークン(私たちの場合はGUID)を含める必要がありますかわからない。 – user1086046