Esempio n. 1
0
        /// <summary>
        /// Call EndReply when reply sent
        /// </summary>
        /// <param name="ar">async result</param>
        private void ReplySent(IAsyncResult ar)
        {
            RequestContextBase context = (RequestContextBase)ar.AsyncState;

            try
            {
                context.EndReply(ar);
            }
            catch (Exception e)
            {
                BrokerTracing.TraceEvent(TraceEventType.Error, 0, "[FrontEndBase] Exception throwed while sending reply: {0}", e);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Check the auth
        /// </summary>
        /// <param name="request">request context</param>
        /// <param name="message">message contains the security context</param>
        /// <returns>the message passes the check or not</returns>
        protected bool CheckAuth(RequestContextBase request, Message message)
        {
            ServiceSecurityContext context = GetSecurityContextFromRequest(message);

            if (this.brokerAuth != null && !this.brokerAuth.CheckAccess(context))
            {
                BrokerTracing.EtwTrace.LogFrontEndRequestRejectedAuthenticationError(this.SessionId, string.Empty, Utility.GetMessageIdFromMessage(message), context.WindowsIdentity.Name);
                FaultException <AuthenticationFailure> faultException = new FaultException <AuthenticationFailure>(new AuthenticationFailure(context.WindowsIdentity.Name), string.Format(SR.AuthenticationFailure, context.WindowsIdentity.Name), Constant.AuthenticationFailureFaultCode, AuthenticationFailure.Action);
                request.BeginReply(FrontEndFaultMessage.GenerateFaultMessage(message, message.Headers.MessageVersion, faultException), this.replySentCallback, request);
                return(false);
            }

            return(true);
        }