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
- ProjectionRewriter.cs
- FixedBufferAttribute.cs
- BasicCommandTreeVisitor.cs
- DeploymentSection.cs
- DrawListViewSubItemEventArgs.cs
- DatePicker.cs
- ServicePointManagerElement.cs
- ChannelCacheSettings.cs
- PlacementWorkspace.cs
- ThreadInterruptedException.cs
- WinEventTracker.cs
- PageAsyncTaskManager.cs
- IssuanceTokenProviderState.cs
- _KerberosClient.cs
- TemplateNameScope.cs
- Menu.cs
- ReliabilityContractAttribute.cs
- CodeGeneratorOptions.cs
- NonParentingControl.cs
- SafeLibraryHandle.cs
- RequestContext.cs
- WorkflowTimerService.cs
- OutputCache.cs
- CompositeDataBoundControl.cs
- TextElementCollection.cs
- GridViewPageEventArgs.cs
- shaper.cs
- OrderedDictionaryStateHelper.cs
- AnimationClockResource.cs
- ExpressionBindingCollection.cs
- Message.cs
- assertwrapper.cs
- EventlogProvider.cs
- GeneralTransformGroup.cs
- CursorConverter.cs
- ClosureBinding.cs
- TreeViewImageIndexConverter.cs
- _SslStream.cs
- ConfigurationManagerHelper.cs
- BamlLocalizableResource.cs
- KoreanCalendar.cs
- CollectionBuilder.cs
- SettingsSavedEventArgs.cs
- BufferedGraphicsContext.cs
- ExpressionBuilder.cs
- OleDbDataAdapter.cs
- EventMap.cs
- GridViewDeleteEventArgs.cs
- FigureHelper.cs
- NameValueFileSectionHandler.cs
- AuthenticationConfig.cs
- MD5CryptoServiceProvider.cs
- TextFormatterContext.cs
- X509Certificate2.cs
- ContractComponent.cs
- Expressions.cs
- TextBoxView.cs
- DefaultEvaluationContext.cs
- safex509handles.cs
- InkSerializer.cs
- SqlWriter.cs
- DataGridViewCheckBoxCell.cs
- TemplatePartAttribute.cs
- HtmlTableRowCollection.cs
- InheritanceContextHelper.cs
- COM2TypeInfoProcessor.cs
- NavigationExpr.cs
- PeerNameResolver.cs
- BufferModeSettings.cs
- DomainLiteralReader.cs
- ContentElement.cs
- InternalSafeNativeMethods.cs
- TouchEventArgs.cs
- StreamResourceInfo.cs
- ApplicationActivator.cs
- Thickness.cs
- ISFClipboardData.cs
- AdjustableArrowCap.cs
- CodeGenerator.cs
- IgnoreSectionHandler.cs
- SearchForVirtualItemEventArgs.cs
- EdmValidator.cs
- XmlSchemaObject.cs
- InvokeBase.cs
- PagerSettings.cs
- Point4D.cs
- DesignDataSource.cs
- BitmapImage.cs
- Vector3DAnimationBase.cs
- TransactionManager.cs
- SoundPlayer.cs
- ColumnBinding.cs
- MouseActionValueSerializer.cs
- ListCollectionView.cs
- ColumnMapVisitor.cs
- EntityDataSourceWizardForm.cs
- DoubleMinMaxAggregationOperator.cs
- Empty.cs
- MethodInfo.cs
- ConvertEvent.cs