Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / Messaging / SupportingTokenChannel.cs / 1 / SupportingTokenChannel.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- // Defines the SupportingTokenChannel, with the only interesting code in these parts using System; using System.Diagnostics; using System.ServiceModel; using System.ServiceModel.Description; using System.ServiceModel.Channels; using System.ServiceModel.Security; using Microsoft.Transactions.Wsat.Protocol; namespace Microsoft.Transactions.Wsat.Messaging { abstract class SupportingTokenChannel: ChannelBase where TChannel : IChannel { SupportingTokenSecurityTokenResolver tokenResolver; protected TChannel innerChannel; static SecurityStandardsManager securityStandardsManager; ProtocolVersion protocolVersion; static SecurityStandardsManager SecurityStandardsManager { get { if (securityStandardsManager == null) { securityStandardsManager = new SecurityStandardsManager(MessageSecurityVersion.Default, WSSecurityTokenSerializer.DefaultInstance); } return securityStandardsManager; } } public SupportingTokenChannel(ChannelManagerBase manager, TChannel innerChannel, SupportingTokenSecurityTokenResolver tokenResolver, ProtocolVersion protocolVersion) : base(manager) { this.innerChannel = innerChannel; this.tokenResolver = tokenResolver; this.protocolVersion = protocolVersion; } protected override void OnAbort() { this.innerChannel.Abort(); } protected override IAsyncResult OnBeginClose(TimeSpan timeout, AsyncCallback callback, object state) { return this.innerChannel.BeginClose(timeout, callback, state); } protected override IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state) { return this.innerChannel.BeginOpen(timeout, callback, state); } protected override void OnClose(TimeSpan timeout) { this.innerChannel.Close(timeout); } protected override void OnEndClose(IAsyncResult result) { this.innerChannel.EndClose(result); } protected override void OnEndOpen(IAsyncResult result) { this.innerChannel.EndOpen(result); } protected override void OnOpen(TimeSpan timeout) { this.innerChannel.Open(timeout); } protected void OnReceive(Message message) { DebugTrace.TraceEnter(this, "OnReceive"); // This is the big payoff for all this SupportingToken* work if (message != null && !this.tokenResolver.FaultInSupportingToken(message)) { if (DebugTrace.Verbose) DebugTrace.Trace(TraceLevel.Verbose, "Failed to fault in SCT for supporting token signature"); // Send a fault Fault fault = Faults.Version(this.protocolVersion).InvalidParameters; if (message.Headers.MessageId != null) { if (DebugTrace.Verbose) DebugTrace.Trace(TraceLevel.Verbose, "Attempting to send {0} fault", fault.Code.Name); Message faultMessage = Library.CreateFaultMessage(message.Headers.MessageId, message.Version, fault); // Note that we already have a RelatesTo on the message, so there's no need // to call RequestReplyCorrelator.PrepareReply RequestReplyCorrelator.AddressReply(faultMessage, new RequestReplyCorrelator.ReplyToInfo(message)); SendSecurityHeader securityHeader = SecurityStandardsManager.CreateSendSecurityHeader( faultMessage, string.Empty, true, false, SecurityAlgorithmSuite.Default, MessageDirection.Output); securityHeader.RequireMessageProtection = false; securityHeader.AddTimestamp(SecurityProtocolFactory.defaultTimestampValidityDuration); faultMessage = securityHeader.SetupExecution(); TrySendFaultReply(faultMessage); } // Reject the message throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new CommunicationException(SR.GetString(SR.SupportingTokenSignatureExpected))); } DebugTrace.TraceLeave(this, "OnReceive"); } public override T GetProperty () { return this.innerChannel.GetProperty (); } protected abstract void TrySendFaultReply(Message faultMessage); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HuffmanTree.cs
- OperatorExpressions.cs
- Metadata.cs
- Helper.cs
- FloaterParagraph.cs
- SiteMapHierarchicalDataSourceView.cs
- GuidelineCollection.cs
- SoapException.cs
- DataStreams.cs
- TextParagraph.cs
- RelOps.cs
- TypedAsyncResult.cs
- KeyNotFoundException.cs
- CompilerState.cs
- Brushes.cs
- BackStopAuthenticationModule.cs
- Base64Decoder.cs
- SiteMapNode.cs
- ContractCodeDomInfo.cs
- Psha1DerivedKeyGenerator.cs
- SqlInfoMessageEvent.cs
- Themes.cs
- OperationAbortedException.cs
- SID.cs
- FormatSettings.cs
- IgnoreSection.cs
- DataGridAddNewRow.cs
- UriTemplateVariablePathSegment.cs
- WebPartEditorCancelVerb.cs
- GridViewDeleteEventArgs.cs
- StyleCollection.cs
- ClientSession.cs
- EventInfo.cs
- FileRecordSequence.cs
- CultureInfo.cs
- AtlasWeb.Designer.cs
- BaseParser.cs
- DoubleLinkListEnumerator.cs
- EmissiveMaterial.cs
- StickyNoteHelper.cs
- FlowDocumentReader.cs
- TemplateKeyConverter.cs
- XmlSubtreeReader.cs
- RoleManagerEventArgs.cs
- ObjectStateManagerMetadata.cs
- CompilationUtil.cs
- SplineQuaternionKeyFrame.cs
- LicFileLicenseProvider.cs
- GenericIdentity.cs
- WinEventQueueItem.cs
- CodeDirectiveCollection.cs
- CodeDOMProvider.cs
- WebPartVerbsEventArgs.cs
- RequestCacheEntry.cs
- ReliableReplySessionChannel.cs
- PreviewPrintController.cs
- ToolbarAUtomationPeer.cs
- VarRefManager.cs
- MonikerSyntaxException.cs
- OleDbDataReader.cs
- ImageDrawing.cs
- BitmapEffectGroup.cs
- ImageDrawing.cs
- Size3D.cs
- CategoryValueConverter.cs
- TextPenaltyModule.cs
- XPathNavigatorReader.cs
- PrimaryKeyTypeConverter.cs
- OdbcTransaction.cs
- XmlResolver.cs
- DataSourceIDConverter.cs
- CqlLexer.cs
- Literal.cs
- InfoCardTraceRecord.cs
- localization.cs
- ListViewDataItem.cs
- CapabilitiesRule.cs
- SpeechAudioFormatInfo.cs
- JsonDeserializer.cs
- tooltip.cs
- DecimalAnimationBase.cs
- ToolStripDropDown.cs
- ClonableStack.cs
- ProfileBuildProvider.cs
- ScrollItemPattern.cs
- XamlRtfConverter.cs
- XmlDataImplementation.cs
- ChildTable.cs
- CompensationToken.cs
- Action.cs
- LayoutUtils.cs
- IChannel.cs
- XmlMemberMapping.cs
- ConnectionStringSettingsCollection.cs
- DependencySource.cs
- MachineKeyConverter.cs
- ColumnWidthChangedEvent.cs
- CodeParameterDeclarationExpressionCollection.cs
- Pen.cs
- FamilyMapCollection.cs