Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// 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; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AuthenticatedStream.cs
- EqualityArray.cs
- ValidationHelper.cs
- WS2007HttpBindingElement.cs
- OracleInfoMessageEventArgs.cs
- HttpBrowserCapabilitiesBase.cs
- CalculatedColumn.cs
- PenContexts.cs
- BmpBitmapEncoder.cs
- XPathParser.cs
- HtmlHistory.cs
- ValueExpressions.cs
- DataGridSortingEventArgs.cs
- DataGridViewColumnEventArgs.cs
- UnsafeNativeMethods.cs
- HtmlImage.cs
- Int32CAMarshaler.cs
- DisposableCollectionWrapper.cs
- Form.cs
- FullTextBreakpoint.cs
- PathGeometry.cs
- PageThemeCodeDomTreeGenerator.cs
- SystemPens.cs
- OrderingExpression.cs
- AnimatedTypeHelpers.cs
- UrlMappingCollection.cs
- AuthenticationSection.cs
- TimerElapsedEvenArgs.cs
- MethodAccessException.cs
- FileSystemEnumerable.cs
- HtmlInputText.cs
- ThrowHelper.cs
- UIElementAutomationPeer.cs
- PolicyLevel.cs
- GridViewRowPresenter.cs
- EncryptionUtility.cs
- AttributeUsageAttribute.cs
- SqlBulkCopy.cs
- WorkflowMessageEventArgs.cs
- HostedElements.cs
- RegexRunnerFactory.cs
- TextEncodedRawTextWriter.cs
- IpcClientChannel.cs
- LightweightEntityWrapper.cs
- StaticTextPointer.cs
- ReadOnlyDictionary.cs
- StringAttributeCollection.cs
- COAUTHINFO.cs
- BindingListCollectionView.cs
- ConnectionProviderAttribute.cs
- ChameleonKey.cs
- HttpCachePolicy.cs
- CodeTypeOfExpression.cs
- DetailsViewUpdateEventArgs.cs
- Formatter.cs
- RequestResizeEvent.cs
- OutputCacheSection.cs
- InheritanceRules.cs
- WebColorConverter.cs
- DataRowExtensions.cs
- OrthographicCamera.cs
- XmlToDatasetMap.cs
- VolatileResourceManager.cs
- LinkedDataMemberFieldEditor.cs
- AssemblyInfo.cs
- SoapServerProtocol.cs
- SemanticBasicElement.cs
- Help.cs
- Buffer.cs
- DataGridViewHeaderCell.cs
- XPathDescendantIterator.cs
- safelink.cs
- FacetValueContainer.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- HotSpotCollectionEditor.cs
- HostingEnvironmentWrapper.cs
- _AutoWebProxyScriptEngine.cs
- ProgressBarRenderer.cs
- EntitySqlQueryCacheEntry.cs
- NetTcpSecurityElement.cs
- TransformCollection.cs
- WebPartTransformer.cs
- Switch.cs
- ButtonBaseAutomationPeer.cs
- LinearGradientBrush.cs
- SignatureSummaryDialog.cs
- TableLayoutPanelCellPosition.cs
- TextServicesDisplayAttribute.cs
- unsafeIndexingFilterStream.cs
- SafeRegistryHandle.cs
- XPathNavigatorKeyComparer.cs
- WindowsEditBox.cs
- EncryptedXml.cs
- TrackBarRenderer.cs
- PageBreakRecord.cs
- IsolatedStorageFile.cs
- GridProviderWrapper.cs
- streamingZipPartStream.cs
- ContentType.cs
- ConsoleTraceListener.cs