2014-02-05 3 views
0

Есть ли способ аутентификации Http с помощью WebSocket4Net? Я хотел бы передать учетные данные моему клиенту. Вот как выглядит мой код:Http Authentication using WebSocket4Net

public bool Connect(string uri, ICredentials credentials = null) 
{ 
    if (this.ws == null) 
    { 
    try 
    { 
     ////this.ws = new WebSocket(uri, string.Empty, WebSocketVersion.None, null,); 
     this.ws = new WebSocket(uri); 
     this.ws.Opened += this.OnWebSocketOpen; 
     this.ws.Closed += this.OnWebSocketClose; 
     this.ws.Error += this.OnWebSocketFail; 
     this.ws.MessageReceived += this.OnWebSocketMessage; 

     try 
     { 
     this.ws.Open(); 
     return true; 
     } 
     catch (Exception ex) 
     { 
     Log.Error("Open web socket failed", ex); 
     this.ws = null; 
     } 
    } 
    catch (Exception exception) 
    { 
     throw new CanNotConnectToDeviceException(new Uri(uri, UriKind.Relative), exception); 
    } 
    } 

    return false; 
} 
+0

Вы решили эту проблему? Или я должен сосредоточиться на этом? –

ответ

0

Thanks J.C для связи. Я использовал его для создания небольшого вспомогательного класса.

public class HttpHelper : IHttpHelper 
{ 
     public KeyValuePair<string, string> 
      CreateAuthorizationHeader(ICredentials credentials) 
     { 
      NetworkCredential networkCredential = 
       credentials.GetCredential(null, null); 

      string userName = networkCredential.UserName; 
      string userPassword = networkCredential.Password; 

      string authInfo = userName + ":" + userPassword; 
      authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)); 

      return new KeyValuePair<string, string>("Authorization", "Basic " + authInfo); 
    } 
} 
1

Я не уверен, что я четко понимаю ваш вопрос, но я все равно пытаюсь помочь.

Вы имеете в виду, что вы разрабатываете веб-службу, и вам нужна «Базовая HTTP-аутентификация»?

Если вы выполняете серверную команду и требуете аутентификации, вы можете сначала ответить HTTP 401.

Большинство браузер уведомляет пользователя, когда он получил HTTP 401.

Если вы делаете на стороне клиента, и вы хотите отправить аутентификации автоматически,

вы можете обратиться к the issue of WebSocket4Net.

Обратите внимание, что базовая проверка подлинности HTTP - это ТЕЛЕФОН PLAIN.

+0

Я разрабатываю приложение, которое подключается к устройству через websocket. – Kingpin

+0

Итак, на вашем устройстве работает веб-сервис, и подождите, пока пользователь подключится к нему вашим приложением, верно? –

+0

yep, это правильно – Kingpin