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
- TcpSocketManager.cs
- XPathNavigatorKeyComparer.cs
- TextDecorationCollectionConverter.cs
- AssemblyAttributesGoHere.cs
- ExpressionConverter.cs
- RawStylusInput.cs
- SHA256.cs
- ErrorStyle.cs
- ElapsedEventArgs.cs
- CodeMemberProperty.cs
- AttributeData.cs
- FilterEventArgs.cs
- TextEndOfSegment.cs
- Timer.cs
- RegisteredDisposeScript.cs
- PropertyChangedEventArgs.cs
- SessionState.cs
- _NegoState.cs
- ProgressBarAutomationPeer.cs
- ToolStripManager.cs
- ServerReliableChannelBinder.cs
- DataGridViewColumnTypeEditor.cs
- SpotLight.cs
- FileIOPermission.cs
- BindableAttribute.cs
- BaseValidator.cs
- ListItemParagraph.cs
- FieldToken.cs
- PersistNameAttribute.cs
- ObjectNotFoundException.cs
- Event.cs
- MatrixTransform.cs
- UniqueIdentifierService.cs
- ReservationNotFoundException.cs
- AnimationTimeline.cs
- BuildProviderCollection.cs
- RijndaelManagedTransform.cs
- ThumbButtonInfoCollection.cs
- OptimisticConcurrencyException.cs
- SqlMethodTransformer.cs
- RootBrowserWindowAutomationPeer.cs
- WebRequestModuleElementCollection.cs
- CompilationRelaxations.cs
- SspiWrapper.cs
- messageonlyhwndwrapper.cs
- GroupStyle.cs
- DataTransferEventArgs.cs
- TypeConverters.cs
- PropertyTabAttribute.cs
- TextRangeProviderWrapper.cs
- SimpleRecyclingCache.cs
- PingReply.cs
- RenderingBiasValidation.cs
- DataGridViewColumnHeaderCell.cs
- WindowAutomationPeer.cs
- ColumnMapProcessor.cs
- ImageAttributes.cs
- ShimAsPublicXamlType.cs
- Int64AnimationBase.cs
- PresentationAppDomainManager.cs
- PrimitiveCodeDomSerializer.cs
- UnsupportedPolicyOptionsException.cs
- UInt32Converter.cs
- Style.cs
- SqlDataSourceFilteringEventArgs.cs
- ToolStripItemRenderEventArgs.cs
- XmlSubtreeReader.cs
- NotifyInputEventArgs.cs
- _SslStream.cs
- JoinElimination.cs
- ContactManager.cs
- StoreItemCollection.Loader.cs
- RichTextBoxContextMenu.cs
- Helper.cs
- EventHandlerService.cs
- ExtensionDataObject.cs
- WindowsIdentity.cs
- MediaPlayerState.cs
- DecoderNLS.cs
- ClusterSafeNativeMethods.cs
- Model3D.cs
- AdCreatedEventArgs.cs
- DrawingDrawingContext.cs
- CompiledQuery.cs
- EntryPointNotFoundException.cs
- WindowsClientElement.cs
- OLEDB_Enum.cs
- _CacheStreams.cs
- FormatVersion.cs
- SafeLocalMemHandle.cs
- CellParagraph.cs
- SuppressMessageAttribute.cs
- EmptyEnumerator.cs
- DataControlPagerLinkButton.cs
- SqlMetaData.cs
- TemplatedAdorner.cs
- SqlTriggerAttribute.cs
- TemplateKeyConverter.cs
- EventMap.cs
- BoundField.cs