Code:
                         / DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / DataAccess / ADConnectionHelper.cs / 1 / ADConnectionHelper.cs
                        
                        
                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
//  
//----------------------------------------------------------------------------- 
namespace System.Web.DataAccess 
{ 
    using  System.Net;
    using  System.Diagnostics; 
    using  System.Web.Hosting;
    using  System.Web.Security;
    using  System.DirectoryServices;
    using  System.DirectoryServices.Protocols; 
    internal static class ActiveDirectoryConnectionHelper 
    { 
        internal static DirectoryEntryHolder GetDirectoryEntry(DirectoryInformation directoryInfo, string objectDN, bool revertImpersonation) 
        {
            Debug.Assert ((objectDN != null) && (objectDN.Length != 0));
            // 
            // Get the adspath and create a directory entry holder
            // 
            DirectoryEntryHolder holder = new DirectoryEntryHolder(new DirectoryEntry ( 
                                                                                                        directoryInfo.GetADsPath(objectDN),
                                                                                                        directoryInfo.GetUsername(), 
                                                                                                        directoryInfo.GetPassword(),
                                                                                                        directoryInfo.AuthenticationTypes));
            //
            // If  revertImpersonation is true, we need to revert 
            //
            holder.Open(null,  revertImpersonation); 
            return holder; 
        }
    } 
    internal sealed class DirectoryEntryHolder
    {
        private ImpersonationContext ctx = null; 
        private bool opened;
        private DirectoryEntry entry; 
 
        internal DirectoryEntryHolder (DirectoryEntry entry)
        { 
            Debug.Assert (entry != null);
            this.entry = entry;
        }
 
        internal void Open (HttpContext context, bool revertImpersonate)
        { 
            if (opened) 
                return; // Already opened
 
            //
            // Revert client impersonation if required
            //
            if (revertImpersonate) 
            {
                ctx = new ApplicationImpersonationContext(); 
            } 
            else
            { 
                ctx = null;
            }
            opened = true; // Open worked! 
        }
 
        internal void Close () 
        {
            if (!opened) // Not open! 
                return;
            entry.Dispose();
            RestoreImpersonation(); 
            opened = false;
        } 
 
        internal void RestoreImpersonation() {
            // Restore impersonation 
            if (ctx != null)
            {
                ctx.Undo();
                ctx = null; 
            }
        } 
 
        internal DirectoryEntry DirectoryEntry
        { 
            get { return entry; }
        }
    }
} 
                        
                        
                        
                        
                    Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- KeyEvent.cs
- ThreadNeutralSemaphore.cs
- BinaryFormatter.cs
- Quaternion.cs
- SpeakCompletedEventArgs.cs
- IndexedDataBuffer.cs
- AccessedThroughPropertyAttribute.cs
- CodeArrayCreateExpression.cs
- NamedPipeWorkerProcess.cs
- WebResourceAttribute.cs
- DataSourceHelper.cs
- SystemNetworkInterface.cs
- RetrieveVirtualItemEventArgs.cs
- ThreadStaticAttribute.cs
- CompressedStack.cs
- StringToken.cs
- datacache.cs
- CapabilitiesSection.cs
- XmlSchemaType.cs
- IssuedTokenServiceElement.cs
- StateBag.cs
- ListViewItemSelectionChangedEvent.cs
- DoubleKeyFrameCollection.cs
- OrderedDictionaryStateHelper.cs
- OneWayElement.cs
- LabelTarget.cs
- NGCSerializationManager.cs
- FlowLayoutPanelDesigner.cs
- EndEvent.cs
- followingsibling.cs
- SqlCachedBuffer.cs
- DbDataSourceEnumerator.cs
- X509CertificateCollection.cs
- WhiteSpaceTrimStringConverter.cs
- Viewport2DVisual3D.cs
- MailDefinition.cs
- DataFormats.cs
- StyleModeStack.cs
- RegularExpressionValidator.cs
- UrlUtility.cs
- XmlSchemaRedefine.cs
- SimpleType.cs
- UniqueConstraint.cs
- Reference.cs
- Bezier.cs
- PackageDigitalSignatureManager.cs
- HtmlMeta.cs
- ping.cs
- oledbmetadatacolumnnames.cs
- VerificationAttribute.cs
- CompositeDataBoundControl.cs
- RouteData.cs
- XhtmlBasicTextBoxAdapter.cs
- PaperSource.cs
- WebPartConnectionsCancelVerb.cs
- GridSplitterAutomationPeer.cs
- GregorianCalendar.cs
- LexicalChunk.cs
- IgnoreFlushAndCloseStream.cs
- AccessText.cs
- SimpleType.cs
- PartitionResolver.cs
- _Connection.cs
- SamlAudienceRestrictionCondition.cs
- DrawItemEvent.cs
- CaseStatement.cs
- DetailsViewUpdatedEventArgs.cs
- Triangle.cs
- StringTraceRecord.cs
- PointCollection.cs
- counter.cs
- ChannelServices.cs
- AccessControlEntry.cs
- ScriptModule.cs
- DependencyPropertyDescriptor.cs
- XmlArrayItemAttribute.cs
- InputProcessorProfiles.cs
- CompensatableSequenceActivity.cs
- codemethodreferenceexpression.cs
- DropTarget.cs
- XamlStyleSerializer.cs
- ProfileServiceManager.cs
- AddressingVersion.cs
- ControlAdapter.cs
- HwndSourceKeyboardInputSite.cs
- NewArrayExpression.cs
- ProgressPage.cs
- EncoderExceptionFallback.cs
- ToolboxItem.cs
- Int64AnimationUsingKeyFrames.cs
- HwndHost.cs
- PopOutPanel.cs
- SqlSelectStatement.cs
- commandenforcer.cs
- SqlUdtInfo.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- Cursors.cs
- WinEventWrap.cs
- DataServiceResponse.cs
- SafeNativeMethods.cs