1

WPF クライアントで NetTcpBinding を使用しています。CallBackChanel (OperationContext.Current.GetCallbackChannel) が他の誰かによってスプーフィングされる可能性があるかどうかを知りたいです... つまり、この CallBack オブジェクトをリストに格納すると、このコールバックは使用できません。他の誰かによって...

例:

        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 
        }
    }

誰かが他の誰かのコールバックを使用することは可能ですか?

タンク

4

1 に答える 1

1

これは非常に漠然とした質問ですが、あなたが何を得ようとしているのかは理解できると思います。まず、OperationContext.Current.GetCallbackChannel は、クライアントが何であれ、サービスの呼び出し元を確実に提供します。別のクライアント (少なくとも Windows では) は、同じ TCP チャネルが既に使用されているため、同じ TCP チャネルを使用できません。

認証について話している場合、またはサービスを呼び出したクライアントが正当であることを確認する方法について話している場合、それはまったく別のトピックです.

于 2013-05-02T18:27:59.417 に答える