2016-07-12 6 views
2

У меня мало опыта работы с кукисами, поэтому мне нужна помощь здесь.WCF соединение с безопасностью HTTPS с использованием SSON cookie

У меня есть сценарий, когда мне нужно установить соединение WCF с удаленной конечной точкой, используя https. Ситуация осложняется тем, что адрес конечной точки в конфигурации клиента фактически указывает на прокси прокси, который перенаправляет запрос на фактическую конечную точку, если SSON auth обнаружен или перенаправлен на страницу auth.

Пример: служебный адрес для конфигурации клиента - «https://a.com/my.svc». Если авторизация ОК я подключится к этому адресу, если нет, то я будет перенаправлен на «https://a.com/auth» и после успешной аутентификации будет продолжаться снова «» https://a.com/my.svc

Если я открыть адрес в веб-браузере, я перенаправлены на страницу авторизации и после успешного авторизации (login/pwd), затем перенаправляется на адрес. После аутентификации создается cookie SSON, и все последующие адресные запросы приводят меня прямо к адресу без дополнительной авторизации.

В настоящее время я сделал следующее:

  1. ли авторизацию с использованием WPF WebBrowser управления. После этого у меня есть куки.
  2. Выполнено подключение конечной точки клиента. Да, сессия используется по умолчанию в среде prod, я не уверен, могу ли я ее удалить.

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

  3. Прямое подключение работает нормально. Я имею в виду, что я не подключаюсь к прокси-адресу, а вместо этого использую конечный адрес конечной точки и не использую файлы cookie.

Теперь проблема заключается в том, как я могу сделал мою связь WCF использовать SSON coookie для обхода аутентификации страницы на ClientBase.Open вызова?

+0

Я не уверен, что это возможно/я могу играть с заголовками msg, но только когда соединение уже установлено. И проблема в том, что я не могу установить соединение без файлов cookie. –

ответ

1

Как только у вас есть SSO-файл cookie из формы auth, вы можете использовать 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(); 

} 
Смежные вопросы