コード例 #1
0
        public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
        {
            var tokenIndex = request.Headers.FindHeader("UniqueToken",
                                                        "http://zstumessenger.azurewebsites.com/messenger/uniqueToken/");

            var ivIndex = request.Headers.FindHeader("IV", "http://zstumessenger.azurewebsites.com/messenger/IV/");

            if (tokenIndex != -1)
            {
                var token = request.Headers.GetHeader <string>(tokenIndex);

                var session = _authorizationManager.GetCurrentSession(token);

                OperationContext.Current.IncomingMessageProperties.Add("Session", session);
            }

            if (ivIndex != -1)
            {
                if (_requestHelper.GetCurrentSession() != null)
                {
                    _aes.SetAesKey(_requestHelper.GetCurrentSession().AesKey);
                }
                else
                {
                    if (MemoryCache.Default.Contains(_requestHelper.GetClientIp()))
                    {
                        _aes.SetAesKey(MemoryCache.Default.Get(_requestHelper.GetClientIp()) as byte[]);
                    }
                }

                var iv = request.Headers.GetHeader <byte[]>(ivIndex);
                _aes.SetAesIv(iv);
                //if (!request.Headers.Action.EndsWith("SetEncryptedSessionKey"))
                //{
                //    var doc = new XmlDocument();
                //    doc.LoadXml(request.ToString());
                //    var t = doc.GetElementsByTagName("s:Body");
                //    DecryptMessage(t[0], ref iv);
                //    var writer = new XmlBodyWriter(t[0].InnerXml);
                //    var newMessage = Message.CreateMessage(request.Version, null, writer);
                //    newMessage.Properties.CopyProperties(request.Properties);
                //    newMessage.Headers.CopyHeadersFrom(request.Headers);
                //    request = newMessage;
                //}
            }

            return(null);
        }
コード例 #2
0
 public MessengerService()
 {
     _passwordHasher       = new PasswordHasher();
     _requestHelper        = new RequestHelper();
     _authorizationManager = new AuthorizationManager();
     _rsa     = new Rsa();
     _session = _requestHelper.GetCurrentSession();
     ImportRsaKey();
 }