/// <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); } }
/// <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); }