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
- ExecutedRoutedEventArgs.cs
- Int32RectValueSerializer.cs
- ProxySimple.cs
- UnknownWrapper.cs
- Panel.cs
- DataSourceView.cs
- DrawingCollection.cs
- ToolStripItemImageRenderEventArgs.cs
- MemberPath.cs
- CodeTypeReferenceExpression.cs
- KeyInfo.cs
- Oid.cs
- DependencyPropertyKind.cs
- EntityTransaction.cs
- PackUriHelper.cs
- ConfigXmlText.cs
- HttpHandlerAction.cs
- EntityDataSourceUtil.cs
- ListViewInsertionMark.cs
- ViewStateModeByIdAttribute.cs
- SoapExtensionImporter.cs
- SoapIncludeAttribute.cs
- ControlPager.cs
- TdsRecordBufferSetter.cs
- Margins.cs
- OleDbCommandBuilder.cs
- _OverlappedAsyncResult.cs
- FilterElement.cs
- Literal.cs
- ServiceHttpHandlerFactory.cs
- AutomationPatternInfo.cs
- CounterSampleCalculator.cs
- ScriptingAuthenticationServiceSection.cs
- ToolboxComponentsCreatedEventArgs.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- Environment.cs
- TextEditorContextMenu.cs
- AppSecurityManager.cs
- ContextItem.cs
- Rectangle.cs
- TextServicesHost.cs
- KeyInterop.cs
- SqlSelectStatement.cs
- TextTreeTextElementNode.cs
- XPathItem.cs
- IisTraceWebEventProvider.cs
- MailSettingsSection.cs
- RegexFCD.cs
- RelatedEnd.cs
- ConditionalDesigner.cs
- ControlEvent.cs
- ClockController.cs
- Root.cs
- DataGridViewComboBoxColumn.cs
- EntityKeyElement.cs
- SqlCharStream.cs
- ClonableStack.cs
- CallbackHandler.cs
- ComNativeDescriptor.cs
- WeakReferenceEnumerator.cs
- StateItem.cs
- CrossSiteScriptingValidation.cs
- LongMinMaxAggregationOperator.cs
- CalendarDay.cs
- SqlStream.cs
- StylusPoint.cs
- XmlSchemaIdentityConstraint.cs
- LoadWorkflowByKeyAsyncResult.cs
- DataBindingExpressionBuilder.cs
- WindowsGraphics2.cs
- FieldBuilder.cs
- DesignTimeVisibleAttribute.cs
- MetafileHeaderWmf.cs
- EndPoint.cs
- SqlDependencyUtils.cs
- CommandManager.cs
- WindowShowOrOpenTracker.cs
- AppSettingsExpressionBuilder.cs
- ConstantProjectedSlot.cs
- PropertyMapper.cs
- NetStream.cs
- BitmapDecoder.cs
- X509Utils.cs
- ServiceDocument.cs
- MobileContainerDesigner.cs
- MetadataArtifactLoaderCompositeResource.cs
- StoreItemCollection.cs
- safePerfProviderHandle.cs
- DataControlLinkButton.cs
- SplitterCancelEvent.cs
- Int64Storage.cs
- GridViewColumnCollectionChangedEventArgs.cs
- SizeConverter.cs
- CompareValidator.cs
- DurationConverter.cs
- ScrollBarAutomationPeer.cs
- SafeCoTaskMem.cs
- SharedHttpTransportManager.cs
- Int32Rect.cs
- DataGridViewColumnCollectionDialog.cs