Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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. //------------------------------------------------------------------------------ //// 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XPathArrayIterator.cs
- StateManagedCollection.cs
- DataSourceGeneratorException.cs
- SelectingProviderEventArgs.cs
- CodeAccessPermission.cs
- _TransmitFileOverlappedAsyncResult.cs
- LinqDataSourceEditData.cs
- DataBindingExpressionBuilder.cs
- XmlElementList.cs
- PropertyChangingEventArgs.cs
- Vector3DAnimationUsingKeyFrames.cs
- XmlTextReaderImplHelpers.cs
- FileDialog_Vista_Interop.cs
- PageBuildProvider.cs
- ModuleBuilderData.cs
- UndoManager.cs
- DataServiceHost.cs
- RtfToken.cs
- PassportAuthenticationModule.cs
- SHA256.cs
- NestedContainer.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- DbParameterCollection.cs
- SessionStateSection.cs
- Documentation.cs
- CalendarDateChangedEventArgs.cs
- AttributeQuery.cs
- StateRuntime.cs
- EntityContainerEntitySetDefiningQuery.cs
- NetworkInformationException.cs
- AuthenticationService.cs
- Context.cs
- OperationContractGenerationContext.cs
- DataGridViewRowsAddedEventArgs.cs
- RunWorkerCompletedEventArgs.cs
- UiaCoreProviderApi.cs
- XmlWrappingReader.cs
- BaseTemplateBuildProvider.cs
- ClassHandlersStore.cs
- ParameterModifier.cs
- ProxyHwnd.cs
- ComponentResourceKeyConverter.cs
- ConfigurationManagerInternalFactory.cs
- ObjectListSelectEventArgs.cs
- CodeTypeMemberCollection.cs
- EditorZoneBase.cs
- ColumnMapTranslator.cs
- ConstraintConverter.cs
- WebPartDescription.cs
- TransformConverter.cs
- XmlDataDocument.cs
- BitmapEffect.cs
- Imaging.cs
- DeviceSpecificDialogCachedState.cs
- XPathDocumentNavigator.cs
- ObservableCollection.cs
- Viewport2DVisual3D.cs
- ResourcePermissionBaseEntry.cs
- ScriptingProfileServiceSection.cs
- WebPageTraceListener.cs
- Parsers.cs
- InputMethodStateChangeEventArgs.cs
- PrimaryKeyTypeConverter.cs
- EntityDataSource.cs
- ApplicationActivator.cs
- WinInet.cs
- DbProviderFactoriesConfigurationHandler.cs
- CalendarSelectionChangedEventArgs.cs
- DataBoundLiteralControl.cs
- SolidColorBrush.cs
- CallTemplateAction.cs
- HttpPostProtocolImporter.cs
- OperationFormatter.cs
- MemberInfoSerializationHolder.cs
- VirtualizedItemPattern.cs
- HttpHandler.cs
- TextTreePropertyUndoUnit.cs
- Matrix3DConverter.cs
- MissingMethodException.cs
- ObjectAssociationEndMapping.cs
- TextServicesHost.cs
- RadialGradientBrush.cs
- NativeRecognizer.cs
- DataGridToolTip.cs
- RsaSecurityKey.cs
- Vector3DValueSerializer.cs
- HtmlInputReset.cs
- _Events.cs
- EditorAttribute.cs
- Cursor.cs
- HeaderedItemsControl.cs
- DirectoryObjectSecurity.cs
- TextBoxAutoCompleteSourceConverter.cs
- KeyBinding.cs
- WebBrowserEvent.cs
- ServiceContractAttribute.cs
- ObjectQueryExecutionPlan.cs
- ProviderSettingsCollection.cs
- BitmapPalette.cs
- ChangeDirector.cs