private void ValidateReply(Message reply, string replyAction) { if (base.interoperating) { if (!base.coordinationService.Security.CheckIdentity(this, reply)) { throw Microsoft.Transactions.Bridge.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new WsatReceiveFailureException(Microsoft.Transactions.SR.GetString("ReplyServerCredentialMismatch"))); } if (!base.coordinationService.GlobalAcl.AccessCheckReply(reply, BindingStrings.InteropBindingQName(base.protocolVersion))) { throw Microsoft.Transactions.Bridge.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new WsatReceiveFailureException(Microsoft.Transactions.SR.GetString("ReplyServerIdentityAccessDenied", new object[] { base.to.Uri }))); } } string action = reply.Headers.Action; if ((reply.IsFault || (action == base.atomicTransactionStrings.FaultAction)) || (action == base.coordinationStrings.FaultAction)) { MessageFault fault = MessageFault.CreateFault(reply, 0x10000); throw Microsoft.Transactions.Bridge.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new WsatFaultException(fault, action)); } if (action != replyAction) { throw Microsoft.Transactions.Bridge.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new WsatReceiveFailureException(Microsoft.Transactions.SR.GetString("InvalidMessageAction", new object[] { action }))); } }
private bool AccessCheck(AuthorizationContext authzContext, MessageProperties messageProperties, string binding) { bool result = false; if (DebugTrace.Verbose) { DebugTrace.Trace(TraceLevel.Verbose, "AccessCheck for binding {0}", binding); } if (string.Compare(binding, BindingStrings.InteropBindingQName(this.protocolVersion), StringComparison.Ordinal) == 0) { result = this.AccessCheck(authzContext, messageProperties, ClaimTypes.Thumbprint, this.thumbprints); } else if ((string.Compare(binding, BindingStrings.NamedPipeBindingQName, StringComparison.Ordinal) == 0) || (string.Compare(binding, BindingStrings.WindowsBindingQName, StringComparison.Ordinal) == 0)) { result = this.AccessCheck(authzContext, messageProperties, ClaimTypes.Sid, this.sids); } else { Microsoft.Transactions.Bridge.DiagnosticUtility.FailFast("Unknown binding " + binding); } this.TraceAccessCheckResult(result, messageProperties); return(result); }
public ICoordinationListener Add(IRegistrationCoordinator serviceInstance) { DebugTrace.TraceEnter("CoordinationService.Add (IRegistrationCoordinator)"); this.AssertProtocolServiceMode(); IWSRegistrationCoordinator dispatcher = RegistrationCoordinatorDispatcher.Instance(this, serviceInstance); ICoordinationListener listener = this.CreateService(dispatcher, dispatcher.ContractType, BindingStrings.RegistrationCoordinatorSuffix(this.protocolVersion)); DebugTrace.TraceLeave("CoordinationService.Add (IRegistrationCoordinator)"); return(listener); }
public ICoordinationListener Add(ICompletionParticipant serviceInstance) { DebugTrace.TraceEnter("CoordinationService.Add (ICompletionParticipant)"); this.AssertProtocolServiceMode(); IWSCompletionParticipant dispatcher = CompletionParticipantDispatcher.Instance(this, serviceInstance); ICoordinationListener listener = this.CreateService(dispatcher, dispatcher.ContractType, BindingStrings.CompletionParticipantSuffix(this.protocolVersion)); DebugTrace.TraceLeave("CoordinationService.Add (ICompletionParticipant)"); return(listener); }