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
- SecurityContextTokenValidationException.cs
- FunctionGenerator.cs
- FlowchartSizeFeature.cs
- GenericTypeParameterBuilder.cs
- MediaContextNotificationWindow.cs
- ResolvedKeyFrameEntry.cs
- ReadOnlyCollectionBase.cs
- Quaternion.cs
- UInt16.cs
- WebPartCancelEventArgs.cs
- GradientStopCollection.cs
- HtmlLink.cs
- ExtentKey.cs
- HasCopySemanticsAttribute.cs
- ActivityPreviewDesigner.cs
- TransformDescriptor.cs
- BitHelper.cs
- XmlSequenceWriter.cs
- ResXDataNode.cs
- PkcsUtils.cs
- EmptyControlCollection.cs
- _DigestClient.cs
- VariantWrapper.cs
- SerializerProvider.cs
- DesignerVerbCollection.cs
- UndirectedGraph.cs
- DependencyObjectCodeDomSerializer.cs
- Int32CAMarshaler.cs
- SqlUdtInfo.cs
- Size.cs
- Vector3DCollection.cs
- NamespaceEmitter.cs
- RequestCache.cs
- OleDbDataAdapter.cs
- OdbcRowUpdatingEvent.cs
- Matrix.cs
- QilName.cs
- oledbmetadatacolumnnames.cs
- Debug.cs
- UserValidatedEventArgs.cs
- SpecularMaterial.cs
- XmlJsonReader.cs
- HttpRequestCacheValidator.cs
- InternalCache.cs
- ReadOnlyDictionary.cs
- FontCacheUtil.cs
- TextCompositionManager.cs
- RootNamespaceAttribute.cs
- GenericTypeParameterConverter.cs
- Stackframe.cs
- VarInfo.cs
- TemplateBindingExtensionConverter.cs
- DetailsViewCommandEventArgs.cs
- odbcmetadatafactory.cs
- RSAPKCS1KeyExchangeFormatter.cs
- BaseProcessor.cs
- DeadLetterQueue.cs
- HScrollProperties.cs
- BCLDebug.cs
- SessionStateItemCollection.cs
- COM2ColorConverter.cs
- ThemeDirectoryCompiler.cs
- Stroke.cs
- HebrewNumber.cs
- DeferredReference.cs
- FileIOPermission.cs
- EncoderBestFitFallback.cs
- SocketPermission.cs
- ServiceProviders.cs
- DelegateBodyWriter.cs
- SerTrace.cs
- BrowserCapabilitiesFactoryBase.cs
- GradientStop.cs
- RightsManagementEncryptionTransform.cs
- ListenerAdaptersInstallComponent.cs
- CodeTypeReferenceExpression.cs
- XmlReflectionImporter.cs
- ProvidersHelper.cs
- FileDetails.cs
- RotateTransform.cs
- StoryFragments.cs
- CodeAssignStatement.cs
- DiscoveryEndpointElement.cs
- InvalidMessageContractException.cs
- SectionInput.cs
- FilterableAttribute.cs
- ScriptingJsonSerializationSection.cs
- BuildProviderCollection.cs
- PostBackTrigger.cs
- Vector3DAnimation.cs
- CommandField.cs
- ConversionHelper.cs
- DbProviderFactory.cs
- XmlIgnoreAttribute.cs
- XamlFrame.cs
- AnnouncementEndpoint.cs
- CodeSnippetCompileUnit.cs
- ColumnReorderedEventArgs.cs
- DataServiceEntityAttribute.cs
- BitmapCodecInfoInternal.cs