Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / DataAccess / ADConnectionHelper.cs / 1305376 / 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
- RijndaelManagedTransform.cs
- BasicHttpMessageCredentialType.cs
- RepeaterCommandEventArgs.cs
- SoapException.cs
- WindowsRegion.cs
- PerformanceCounterPermission.cs
- UserCancellationException.cs
- ApplicationHost.cs
- ConfigurationManagerHelperFactory.cs
- DtrList.cs
- GraphicsContainer.cs
- XmlSchemaAnnotated.cs
- EventOpcode.cs
- DoubleCollectionValueSerializer.cs
- Expressions.cs
- RuntimeConfig.cs
- WpfGeneratedKnownTypes.cs
- ZoomPercentageConverter.cs
- CodeBlockBuilder.cs
- CompressStream.cs
- ThreadTrace.cs
- EntityUtil.cs
- CircleHotSpot.cs
- ToolstripProfessionalRenderer.cs
- XmlSignificantWhitespace.cs
- XXXInfos.cs
- XPathSingletonIterator.cs
- IdnMapping.cs
- MsmqIntegrationValidationBehavior.cs
- PriorityQueue.cs
- ReceiveActivityDesigner.cs
- GeometryGroup.cs
- PrintEvent.cs
- Timer.cs
- SoapSchemaImporter.cs
- TdsParserSessionPool.cs
- ComAdminInterfaces.cs
- Component.cs
- ComponentChangingEvent.cs
- RelationshipEndCollection.cs
- DataTableNewRowEvent.cs
- SettingsProviderCollection.cs
- PngBitmapDecoder.cs
- NameSpaceExtractor.cs
- CompleteWizardStep.cs
- SimpleWebHandlerParser.cs
- XmlWriterDelegator.cs
- Completion.cs
- ApplicationActivator.cs
- DragDropHelper.cs
- RefreshEventArgs.cs
- TabControlCancelEvent.cs
- EntityContainerEntitySet.cs
- AppSettingsReader.cs
- UserPersonalizationStateInfo.cs
- ExpandoObject.cs
- SerializerProvider.cs
- FacetChecker.cs
- XmlEventCache.cs
- GetMemberBinder.cs
- ContainerFilterService.cs
- ContentElement.cs
- TabOrder.cs
- XmlSerializerVersionAttribute.cs
- SqlClientPermission.cs
- OdbcError.cs
- RangeBaseAutomationPeer.cs
- MetadataPropertyCollection.cs
- XPathNavigatorReader.cs
- TraceContext.cs
- TimeSpanStorage.cs
- DataGridRow.cs
- TextBox.cs
- FreezableDefaultValueFactory.cs
- SpStreamWrapper.cs
- XsdCachingReader.cs
- AppDomainUnloadedException.cs
- StoragePropertyMapping.cs
- DrawingContextDrawingContextWalker.cs
- MetaColumn.cs
- Menu.cs
- RootProjectionNode.cs
- EntityTypeBase.cs
- UrlAuthorizationModule.cs
- JsonWriter.cs
- xsdvalidator.cs
- StackOverflowException.cs
- ActiveXSite.cs
- LocalValueEnumerator.cs
- HandoffBehavior.cs
- OpenTypeMethods.cs
- ProcessThreadCollection.cs
- OdbcEnvironmentHandle.cs
- SourceFileBuildProvider.cs
- WebUtil.cs
- SiteMapSection.cs
- NavigationPropertyEmitter.cs
- ProgressBarBrushConverter.cs
- ThousandthOfEmRealDoubles.cs
- NameValueFileSectionHandler.cs