Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- HtmlToClrEventProxy.cs
- AssemblyResourceLoader.cs
- BigInt.cs
- EntityDataSourceUtil.cs
- XmlLinkedNode.cs
- SoundPlayer.cs
- _LazyAsyncResult.cs
- StaticExtensionConverter.cs
- SQLDouble.cs
- GlyphRun.cs
- DataGridViewTopRowAccessibleObject.cs
- TransactionInterop.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- Substitution.cs
- LinkLabelLinkClickedEvent.cs
- GeometryGroup.cs
- ImageUrlEditor.cs
- SQLSingleStorage.cs
- TrueReadOnlyCollection.cs
- MILUtilities.cs
- LocalizableAttribute.cs
- ResourceProviderFactory.cs
- UnmanagedMemoryStreamWrapper.cs
- ChannelParameterCollection.cs
- _LazyAsyncResult.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- ParseChildrenAsPropertiesAttribute.cs
- IPAddressCollection.cs
- ContentOperations.cs
- PathFigureCollection.cs
- XmlEnumAttribute.cs
- PageHandlerFactory.cs
- SimpleApplicationHost.cs
- ClearTypeHintValidation.cs
- DragEvent.cs
- MissingManifestResourceException.cs
- ResXDataNode.cs
- CapacityStreamGeometryContext.cs
- ToolStripDropDown.cs
- RegexCode.cs
- CachingHintValidation.cs
- exports.cs
- GPPOINT.cs
- ExpressionBindingsDialog.cs
- WebProxyScriptElement.cs
- DeflateStream.cs
- OletxResourceManager.cs
- HorizontalAlignConverter.cs
- LinqDataSourceDisposeEventArgs.cs
- FlowNode.cs
- PathParser.cs
- ReferenceConverter.cs
- SecureUICommand.cs
- ConfigXmlText.cs
- WebServiceEnumData.cs
- Pens.cs
- SmiGettersStream.cs
- UpdatableWrapper.cs
- MethodInfo.cs
- StringSource.cs
- ShapingWorkspace.cs
- CreateUserWizardStep.cs
- EtwTrackingBehaviorElement.cs
- StorageEntityTypeMapping.cs
- NumberSubstitution.cs
- SchemaCollectionPreprocessor.cs
- PointKeyFrameCollection.cs
- AspNetHostingPermission.cs
- ScopeCollection.cs
- CqlGenerator.cs
- PromptStyle.cs
- CqlIdentifiers.cs
- RepeatBehavior.cs
- FolderLevelBuildProvider.cs
- CompositionAdorner.cs
- ApplicationManager.cs
- TemplateLookupAction.cs
- ProfilePropertyMetadata.cs
- InternalResources.cs
- ConnectionPoint.cs
- CompilerError.cs
- DataGridHeaderBorder.cs
- CodeEventReferenceExpression.cs
- pingexception.cs
- HashAlgorithm.cs
- Transform3DGroup.cs
- SiteMapNodeItemEventArgs.cs
- HttpListener.cs
- ArrayElementGridEntry.cs
- FontSizeConverter.cs
- DesignerCategoryAttribute.cs
- HtmlImage.cs
- XmlSchemaSimpleContentRestriction.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- SortDescription.cs
- CellPartitioner.cs
- Grant.cs
- ImageField.cs
- TypeSystem.cs
- XmlSchemaFacet.cs