Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- EllipseGeometry.cs
- PartitionedStreamMerger.cs
- MultiView.cs
- FormParameter.cs
- Transform3DCollection.cs
- Underline.cs
- EncodingNLS.cs
- LinqDataSourceInsertEventArgs.cs
- ContentValidator.cs
- ShaderEffect.cs
- DynamicILGenerator.cs
- MsdtcWrapper.cs
- WebPartsSection.cs
- PolyQuadraticBezierSegment.cs
- DataViewSetting.cs
- GridViewRowPresenterBase.cs
- ProfileService.cs
- TextRangeProviderWrapper.cs
- SoapFormatter.cs
- DbParameterHelper.cs
- Oid.cs
- ConsoleKeyInfo.cs
- ExeContext.cs
- OrderedDictionaryStateHelper.cs
- ResolveDuplexAsyncResult.cs
- SafeBitVector32.cs
- UmAlQuraCalendar.cs
- BaseTreeIterator.cs
- BrowserCapabilitiesCompiler.cs
- DeclarativeCatalogPart.cs
- TransactionTraceIdentifier.cs
- StorageAssociationTypeMapping.cs
- DoubleAnimationUsingPath.cs
- TransactionChannelFactory.cs
- BooleanFacetDescriptionElement.cs
- LineSegment.cs
- DataSourceProvider.cs
- TextSelection.cs
- ExpandableObjectConverter.cs
- ImmutableCollection.cs
- VerificationException.cs
- Parser.cs
- StatusBarPanel.cs
- MemoryPressure.cs
- QueryExtender.cs
- PropertyTabAttribute.cs
- DigitalSignature.cs
- FileDetails.cs
- SmiMetaDataProperty.cs
- EastAsianLunisolarCalendar.cs
- GeometryModel3D.cs
- OutputCacheModule.cs
- ObjectDataSourceView.cs
- SystemColors.cs
- StructuredCompositeActivityDesigner.cs
- InheritanceUI.cs
- ToolStripItemRenderEventArgs.cs
- ClientCultureInfo.cs
- ControlEvent.cs
- OpenTypeLayoutCache.cs
- NegatedCellConstant.cs
- HwndPanningFeedback.cs
- ValueSerializer.cs
- SerializationObjectManager.cs
- AppDomainAttributes.cs
- ResourcesBuildProvider.cs
- FileDetails.cs
- FacetChecker.cs
- WsatServiceAddress.cs
- ChtmlMobileTextWriter.cs
- WebPartUtil.cs
- ElapsedEventArgs.cs
- SuppressMergeCheckAttribute.cs
- ImagingCache.cs
- AbstractDataSvcMapFileLoader.cs
- FamilyCollection.cs
- DataReaderContainer.cs
- Compiler.cs
- DataRecordObjectView.cs
- BuildManagerHost.cs
- AdCreatedEventArgs.cs
- EditorAttribute.cs
- ListViewGroup.cs
- XmlQualifiedName.cs
- HtmlGenericControl.cs
- ValidationErrorEventArgs.cs
- TraceSource.cs
- Highlights.cs
- X509Certificate2.cs
- ArgIterator.cs
- TextPenaltyModule.cs
- ClientProxyGenerator.cs
- Application.cs
- MenuBase.cs
- ModuleElement.cs
- CallbackHandler.cs
- ActivityDesignerResources.cs
- TwoPhaseCommitProxy.cs
- UnsafeNativeMethods.cs
- PointLightBase.cs