Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / InfocardInteractiveChannelInitializer.cs / 1 / InfocardInteractiveChannelInitializer.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Security { using System.Collections.Generic; using System.ServiceModel.Channels; using System.ServiceModel.Dispatcher; using System.ServiceModel.Description; using System.IdentityModel.Selectors; using System.IdentityModel.Tokens; using System.Runtime.Serialization; using System.ServiceModel.Security; public class InfocardInteractiveChannelInitializer : IInteractiveChannelInitializer { ClientCredentials credentials; Binding binding; public InfocardInteractiveChannelInitializer( ClientCredentials credentials, Binding binding ) { this.credentials = credentials; this.binding = binding; } public Binding Binding { get { return binding; } } public virtual IAsyncResult BeginDisplayInitializationUI(IClientChannel channel, AsyncCallback callback, object state) { return new GetTokenUIAsyncResult(binding, channel, this.credentials, callback, state); } public virtual void EndDisplayInitializationUI(IAsyncResult result) { GetTokenUIAsyncResult.End(result); } } internal class GetTokenUIAsyncResult :AsyncResult { IClientChannel proxy; ClientCredentials credentials; Uri relyingPartyIssuer; bool requiresInfoCard; Binding binding; static AsyncCallback callback = DiagnosticUtility.ThunkAsyncCallback(new AsyncCallback(GetTokenUIAsyncResult.Callback)); internal GetTokenUIAsyncResult(Binding binding, IClientChannel channel, ClientCredentials credentials, AsyncCallback callback, object state) : base(callback, state) { this.credentials = credentials; this.proxy = channel; this.binding = binding; this.CallBegin(true); } void CallBegin(bool completedSynchronously) { IAsyncResult result = null; Exception exception = null; try { CardSpacePolicyElement[ ] chain; SecurityTokenManager tokenManager = credentials.CreateSecurityTokenManager(); requiresInfoCard = InfoCardHelper.IsInfocardRequired(binding, credentials, tokenManager, proxy.RemoteAddress, out chain, out relyingPartyIssuer); MessageSecurityVersion bindingSecurityVersion = InfoCardHelper.GetBindingSecurityVersionOrDefault(binding); WSSecurityTokenSerializer tokenSerializer = WSSecurityTokenSerializer.DefaultInstance; result = credentials.GetInfoCardTokenCallback.BeginInvoke(requiresInfoCard, chain, tokenManager.CreateSecurityTokenSerializer(bindingSecurityVersion.SecurityTokenVersion), callback, this); } catch (Exception e) { if (DiagnosticUtility.IsFatal(e)) { throw; } exception = e; } if (exception == null) { if (!result.CompletedSynchronously) { return; } this.CallEnd(result, out exception); } if (exception != null) { return; } this.CallComplete(completedSynchronously, null); } static void Callback(IAsyncResult result) { if (result.CompletedSynchronously) { return; } GetTokenUIAsyncResult outer = (GetTokenUIAsyncResult)result.AsyncState; Exception exception = null; outer.CallEnd(result, out exception); outer.CallComplete(false, exception); } void CallEnd(IAsyncResult result, out Exception exception) { try { SecurityToken token = credentials.GetInfoCardTokenCallback.EndInvoke(result); ChannelParameterCollection channelParameters = proxy.GetProperty(); if( null != channelParameters ) { channelParameters.Add( new InfoCardChannelParameter( token, relyingPartyIssuer, requiresInfoCard ) ); } exception = null; } catch (Exception e) { if (DiagnosticUtility.IsFatal(e)) { throw; } exception = e; } } void CallComplete(bool completedSynchronously, Exception exception) { this.Complete(completedSynchronously, exception); } internal static void End(IAsyncResult result) { AsyncResult.End (result); } } } // 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
- MenuItemBindingCollection.cs
- InvalidOperationException.cs
- TemplatedAdorner.cs
- ToolStripMenuItem.cs
- figurelengthconverter.cs
- DateTimeSerializationSection.cs
- TextElementEnumerator.cs
- SmtpSection.cs
- PublisherIdentityPermission.cs
- WebSysDescriptionAttribute.cs
- XmlEntityReference.cs
- DataContract.cs
- EmptyCollection.cs
- DatatypeImplementation.cs
- DesignerVerbCollection.cs
- AsyncOperation.cs
- ResourceProviderFactory.cs
- safesecurityhelperavalon.cs
- XamlStyleSerializer.cs
- ConnectionPoint.cs
- SapiRecognizer.cs
- XmlArrayItemAttributes.cs
- DbConnectionPoolGroupProviderInfo.cs
- PageEventArgs.cs
- CompModSwitches.cs
- InkCanvasInnerCanvas.cs
- HtmlElementErrorEventArgs.cs
- DataGridClipboardCellContent.cs
- KnownTypesHelper.cs
- DateTimePicker.cs
- ScriptResourceMapping.cs
- NegotiateStream.cs
- BookmarkEventArgs.cs
- ServiceObjectContainer.cs
- DownloadProgressEventArgs.cs
- WebPartConnectionsCancelVerb.cs
- ConcurrentStack.cs
- XsltSettings.cs
- EntitySetBaseCollection.cs
- SHA1Managed.cs
- StackBuilderSink.cs
- DialogResultConverter.cs
- WindowsListViewScroll.cs
- FixedDocument.cs
- PrimitiveType.cs
- InvalidWMPVersionException.cs
- FontStretches.cs
- Registry.cs
- WebPartTransformer.cs
- ParallelEnumerable.cs
- DoubleAnimationBase.cs
- PtsPage.cs
- AbstractSvcMapFileLoader.cs
- VisualCollection.cs
- VirtualDirectoryMapping.cs
- ErrorHandlerModule.cs
- Substitution.cs
- ServiceEndpointCollection.cs
- ObjectDataSourceDisposingEventArgs.cs
- Utility.cs
- SizeKeyFrameCollection.cs
- glyphs.cs
- RunClient.cs
- EventProviderWriter.cs
- FilterQuery.cs
- HMACSHA256.cs
- DataGridViewCellStyleConverter.cs
- StorageEntityTypeMapping.cs
- HttpRuntime.cs
- UInt64Converter.cs
- ProtocolViolationException.cs
- GroupBoxRenderer.cs
- ListItemCollection.cs
- DependencyProperty.cs
- ReadOnlyCollection.cs
- CalendarTable.cs
- Policy.cs
- EditorOptionAttribute.cs
- AsyncResult.cs
- MimeXmlImporter.cs
- IDispatchConstantAttribute.cs
- WebPartChrome.cs
- MenuItem.cs
- LineSegment.cs
- InvalidPropValue.cs
- Vector3DKeyFrameCollection.cs
- SafeNativeMethods.cs
- Attributes.cs
- FormViewUpdatedEventArgs.cs
- DataGridColumnHeadersPresenter.cs
- PointAnimation.cs
- ListenerAdaptersInstallComponent.cs
- XmlSchemaException.cs
- FontNamesConverter.cs
- SocketAddress.cs
- ChangePassword.cs
- MaxSessionCountExceededException.cs
- DataKeyArray.cs
- TargetFrameworkUtil.cs
- WmfPlaceableFileHeader.cs