2016-07-12 5 views
2

私はクッキーに関する経験がほとんどないので、ここでいくつかの助けが必要です。SSONクッキーを使用したHTTPSセキュリティとのWCF接続

私は、httpsセキュリティを使用してリモートエンドポイントへのWCF接続を確立する必要があるシナリオを持っています。クライアント設定のエンドポイントアドレスが実際にWeb プロキシを指していることによって、SSON認証が検出された場合や、認証ページにリダイレクトされた場合に、実際のエンドポイントにリクエストをリダイレクトするという状況が複雑になります。

:クライアント設定のサービスアドレスは「https://a.com/my.svc」です。認証がOKであれば私がいない場合は、i「はhttps://a.com/auth」にリダイレクトされ、成功した認証は、「https://a.com/my.svc」に再び

を進めてまいります後、私は、Webブラウザのアドレスを開いた場合、私はリダイレクトよ、このアドレスに接続しますページを認証し、認証に成功した後(login/pwd)、アドレスにリダイレクトされます。認証の後、SSONクッキーが生成され、その結果のアドレス照会はすべて、追加の認証なしで直接アドレスにつながります。私は次のことをやった、今のよう

  1. は、WPFのWebBrowser コントロールを使用してAUTHいます。私はその後にクッキーを持っています。
  2. クライアントエンドポイント接続を作成しました。うん、セッションは、prod環境ではデフォルトで使用されていますが、私はそれを削除できるかわかりません。

    <customBinding> 
    <binding name="WSHttpsBinding_IDB2Connector"> 
        <reliableSession inactivityTimeout="23:59:59" ordered="True"/> 
        <httpsTransport requireClientCertificate="false" /> 
    </binding> 
    

  3. 直接接続が正常に動作します。私はプロキシアドレスに接続せず、代わりに最終的なエンドポイントアドレスを使用し、Cookieを使用しないことを意味します。

さて問題は、私はClientBase.Open呼び出しで認証ページをバイパスするSSONのcoookieを使用するように私のWCFの接続を作ったことができる方法ですか?

+0

これは可能なのかわかりません/メッセージヘッダーで再生できますが、接続が確立されている場合にのみ再生できます。そして問題は、私はクッキーなしで接続を確立できないということです。 –

答えて

1

認証フォームからSSO Cookieを取得すると、OperationContextScopeを使用してHTTPヘッダーを送信できます。

YourServiceClient client = new YourServiceClient(); 
using(new OperationContextScope(client.InnerChannel)) 
{ 
    // Add a HTTP Header to an outgoing request 
    HttpRequestMessageProperty requestMessage = new HttpRequestMessageProperty(); 
    requestMessage.Headers["Cookie"] = "MySSOCookie=MySSOCookieValue"; //SSOCookie content 
    OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessage; 

    client.doSomething(); 

} 
関連する問題