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
- Claim.cs
- BitmapMetadataEnumerator.cs
- ButtonChrome.cs
- DoubleCollectionValueSerializer.cs
- CapabilitiesState.cs
- __ComObject.cs
- PageCatalogPart.cs
- Triangle.cs
- XmlResolver.cs
- DataRelationCollection.cs
- TextTreeRootTextBlock.cs
- PathData.cs
- CreateWorkflowOwnerCommand.cs
- _RequestCacheProtocol.cs
- AudioBase.cs
- ExpressionBuilderContext.cs
- DesignerForm.cs
- HyperLinkColumn.cs
- BinHexEncoding.cs
- SecurityPermission.cs
- diagnosticsswitches.cs
- RuleRefElement.cs
- DatePickerAutomationPeer.cs
- VirtualPathData.cs
- HttpServerProtocol.cs
- AuthenticatedStream.cs
- DataGridCellsPresenter.cs
- Animatable.cs
- StrokeRenderer.cs
- DrawingState.cs
- ContentOnlyMessage.cs
- SetterTriggerConditionValueConverter.cs
- SetIterators.cs
- GraphicsContext.cs
- DecoratedNameAttribute.cs
- VerticalAlignConverter.cs
- LinearQuaternionKeyFrame.cs
- FixUpCollection.cs
- BooleanStorage.cs
- SqlProvider.cs
- ZipPackage.cs
- MachinePropertyVariants.cs
- ClearCollection.cs
- BindingList.cs
- ContentPresenter.cs
- SiteMapDataSourceView.cs
- InternalConfirm.cs
- WebReferenceOptions.cs
- ResourceDefaultValueAttribute.cs
- DiscoveryVersion.cs
- CultureInfo.cs
- PerfCounterSection.cs
- ParseNumbers.cs
- WebPartZoneCollection.cs
- CryptoApi.cs
- RMPermissions.cs
- ErrorFormatterPage.cs
- DetailsViewPageEventArgs.cs
- DrawingDrawingContext.cs
- XPathNodeInfoAtom.cs
- EntityViewContainer.cs
- RefType.cs
- SafeSecurityHelper.cs
- Rect3DValueSerializer.cs
- Container.cs
- typedescriptorpermissionattribute.cs
- DataGridGeneralPage.cs
- XmlSchemaComplexContentExtension.cs
- QueryException.cs
- NamedObject.cs
- XmlImplementation.cs
- BindingValueChangedEventArgs.cs
- URL.cs
- FontWeight.cs
- Duration.cs
- UrlMappingCollection.cs
- ConfigurationStrings.cs
- FormClosingEvent.cs
- EllipseGeometry.cs
- IgnoreFlushAndCloseStream.cs
- EventListener.cs
- ProfileServiceManager.cs
- ChainedAsyncResult.cs
- XmlSchemas.cs
- UriParserTemplates.cs
- TypeDelegator.cs
- WithParamAction.cs
- SqlRetyper.cs
- GenericTextProperties.cs
- ComboBox.cs
- ExceptionHandlers.cs
- DataGridTableCollection.cs
- BamlMapTable.cs
- Selector.cs
- SerializationSectionGroup.cs
- CollectionAdapters.cs
- SourceLineInfo.cs
- XmlStreamStore.cs
- PeerPresenceInfo.cs
- input.cs