2013-05-02 4 views
1

Я использую NetTcpBinding с клиентом WPF. Я хочу знать, может ли CallBackChanel (OperationContext.Current.GetCallbackChannel) быть подделан каким-то другим ... i meen, могу ли я быть уверенным, если я сохраню этот объект CallBack в списке, этот обратный вызов может ' т быть использованы кем-то еще ...WCF - Могу ли я безопасно использовать CallbackChannel для идентификации аутентифицированных клиентов?

Exemple:

 private class ClientCallBack 
    { 
     public IDuplexServiceCallBack CallBack { get; set; } 
     public long UserId { get; set; } 
     public bool IsAuthenticate { get; set; } 
     public DateTime LastPing { get; set; } 
     public DateTime LastPong { get; set; } 
     public bool Fault { get; set; } 
     public long Ping { get; set; } 
    } 
    static List<ClientCallBack> Clients; 

    public void Login(string UserName, string Password) 
    { 
     var auth = new AutentificationService(); 
     var user = auth.Login(UserName, Password, true, null); 
     if (user != null) 
     { 
      Clients.Add(new ClientCallBack() 
      { 
       CallBack = OperationContext.Current.GetCallbackChannel<IDuplexServiceCallBack>();, 
       Fault = false, 
       IsAutenticate = true, 
       LastPing = DateTime.Now, 
       LastPong = DateTime.Now, 
       Ping = 0, 
       UserId = user.Id 
      }); 
     } 
    } 
    public void action() { 
     var client = Clients.FirstOrDefault(o => o.CallBack == OperationContext.Current.GetCallbackChannel<IDuplexServiceCallBack>();); 
     if (client != null && client.IsAutenticate) 
     { 
     //This client is authenticated 
     } 
    } 

возможно для некоторых один использовать CALLBACK кого-то другого?

танки

ответ

1

Это очень расплывчатый вопрос, но я думаю, что я понимаю, что вы пытаетесь получить в. Во-первых, OperationContext.Current.GetCallbackChannel определенно даст вам вызывающую услугу, какой бы клиент ни был. Другой клиент (по крайней мере, на окнах) не сможет использовать один и тот же канал TCP, поскольку он уже используется.

Теперь, если вы говорите об аутентификации или как убедиться, что клиент, который вызвал службу, является законным, это совсем другая тема.

+0

танк ты :) ответишь на мой вопрос :) – Benoit