Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / Security / WindowsAuthenticationModule.cs / 1 / WindowsAuthenticationModule.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * WindowsAuthenticationModule class * * Copyright (c) 1999 Microsoft Corporation */ namespace System.Web.Security { using System.Web; using System.Web.Configuration; using System.Security.Principal; using System.Security.Permissions; using System.Globalization; using System.Web.Management; using System.Web.Util; using System.Web.Hosting; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class WindowsAuthenticationModule : IHttpModule { private WindowsAuthenticationEventHandler _eventHandler; private static bool _fAuthChecked; private static bool _fAuthRequired; private static WindowsIdentity _anonymousIdentity; private static WindowsPrincipal _anonymousPrincipal; ////// Allows ASP.NET applications to use Windows/IIS authentication. /// ////// [SecurityPermission(SecurityAction.Demand, Unrestricted=true)] public WindowsAuthenticationModule() { } ////// Initializes a new instance of the ////// class. /// /// This is a global.asax event that must be /// named WindowsAuthenticate_OnAuthenticate event. It's used primarily to attach a /// custom IPrincipal object to the context. /// public event WindowsAuthenticationEventHandler Authenticate { add { _eventHandler += value; } remove { _eventHandler -= value; } } ////// public void Dispose() { } ///[To be supplied.] ////// public void Init(HttpApplication app) { app.AuthenticateRequest += new EventHandler(this.OnEnter); } //////////////////////////////////////////////////////////// // OnAuthenticate: Custom Authentication modules can override // this method to create a custom IPrincipal object from // a WindowsIdentity ///[To be supplied.] ////// Calls the /// WindowsAuthentication_OnAuthenticate handler if one exists. /// void OnAuthenticate(WindowsAuthenticationEventArgs e) { //////////////////////////////////////////////////////////// // If there are event handlers, invoke the handlers if (_eventHandler != null) _eventHandler(this, e); if (e.Context.User == null) { if (e.User != null) e.Context.User = e.User; else if (e.Identity == _anonymousIdentity) e.Context.SetPrincipalNoDemand(_anonymousPrincipal, false /*needToSetNativePrincipal*/); else e.Context.SetPrincipalNoDemand(new WindowsPrincipal(e.Identity), false /*needToSetNativePrincipal*/); } } //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// // Methods for internal implementation ////// /// void OnEnter(Object source, EventArgs eventArgs) { if (!IsEnabled) return; HttpApplication app = (HttpApplication)source; HttpContext context = app.Context;; WindowsIdentity identity = null; ////////////////////////////////////////////////////////////////// // Step 2: Create a Windows Identity from the credentials from IIS if (HttpRuntime.UseIntegratedPipeline) { // The native WindowsAuthenticationModule sets the user principal in IIS7WorkerRequest.SynchronizeVariables. // The managed WindowsAuthenticationModule provides backward compatibility by rasing the OnAuthenticate event. WindowsPrincipal user = context.User as WindowsPrincipal; if (user != null) { // identity will be null if this is not a WindowsIdentity identity = user.Identity as WindowsIdentity; // clear Context.User for backward compatibility (it will be set in OnAuthenticate) context.SetPrincipalNoDemand(null, false /*needToSetNativePrincipal*/); } } else { String strLogonUser = context.WorkerRequest.GetServerVariable("LOGON_USER"); String strAuthType = context.WorkerRequest.GetServerVariable("AUTH_TYPE"); if (strLogonUser == null) { strLogonUser = String.Empty; } if (strAuthType == null) { strAuthType = String.Empty; } if (strLogonUser.Length == 0 && (strAuthType.Length == 0 || StringUtil.EqualsIgnoreCase(strAuthType, "basic"))) { //////////////////////////////////////////////////////// // Step 2a: Use the anonymous identity identity = _anonymousIdentity; } else { identity = new WindowsIdentity( context.WorkerRequest.GetUserToken(), strAuthType, WindowsAccountType.Normal, true); } } /////////////////////////////////////////////////////////////////////////////////// // Step 3: Call OnAuthenticate to create IPrincipal for this request. if (identity != null) { OnAuthenticate( new WindowsAuthenticationEventArgs(identity, context) ); } } internal static IPrincipal AnonymousPrincipal { get { return _anonymousPrincipal; } } internal static bool IsEnabled { get { if (!_fAuthChecked) { AuthenticationSection settings = RuntimeConfig.GetAppConfig().Authentication; settings.ValidateAuthenticationMode(); _fAuthRequired = (settings.Mode == AuthenticationMode.Windows); if (_fAuthRequired) { _anonymousIdentity = WindowsIdentity.GetAnonymous(); _anonymousPrincipal = new WindowsPrincipal(_anonymousIdentity); } _fAuthChecked = true; } return _fAuthRequired; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * WindowsAuthenticationModule class * * Copyright (c) 1999 Microsoft Corporation */ namespace System.Web.Security { using System.Web; using System.Web.Configuration; using System.Security.Principal; using System.Security.Permissions; using System.Globalization; using System.Web.Management; using System.Web.Util; using System.Web.Hosting; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class WindowsAuthenticationModule : IHttpModule { private WindowsAuthenticationEventHandler _eventHandler; private static bool _fAuthChecked; private static bool _fAuthRequired; private static WindowsIdentity _anonymousIdentity; private static WindowsPrincipal _anonymousPrincipal; ////// Allows ASP.NET applications to use Windows/IIS authentication. /// ////// [SecurityPermission(SecurityAction.Demand, Unrestricted=true)] public WindowsAuthenticationModule() { } ////// Initializes a new instance of the ////// class. /// /// This is a global.asax event that must be /// named WindowsAuthenticate_OnAuthenticate event. It's used primarily to attach a /// custom IPrincipal object to the context. /// public event WindowsAuthenticationEventHandler Authenticate { add { _eventHandler += value; } remove { _eventHandler -= value; } } ////// public void Dispose() { } ///[To be supplied.] ////// public void Init(HttpApplication app) { app.AuthenticateRequest += new EventHandler(this.OnEnter); } //////////////////////////////////////////////////////////// // OnAuthenticate: Custom Authentication modules can override // this method to create a custom IPrincipal object from // a WindowsIdentity ///[To be supplied.] ////// Calls the /// WindowsAuthentication_OnAuthenticate handler if one exists. /// void OnAuthenticate(WindowsAuthenticationEventArgs e) { //////////////////////////////////////////////////////////// // If there are event handlers, invoke the handlers if (_eventHandler != null) _eventHandler(this, e); if (e.Context.User == null) { if (e.User != null) e.Context.User = e.User; else if (e.Identity == _anonymousIdentity) e.Context.SetPrincipalNoDemand(_anonymousPrincipal, false /*needToSetNativePrincipal*/); else e.Context.SetPrincipalNoDemand(new WindowsPrincipal(e.Identity), false /*needToSetNativePrincipal*/); } } //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// // Methods for internal implementation ////// /// void OnEnter(Object source, EventArgs eventArgs) { if (!IsEnabled) return; HttpApplication app = (HttpApplication)source; HttpContext context = app.Context;; WindowsIdentity identity = null; ////////////////////////////////////////////////////////////////// // Step 2: Create a Windows Identity from the credentials from IIS if (HttpRuntime.UseIntegratedPipeline) { // The native WindowsAuthenticationModule sets the user principal in IIS7WorkerRequest.SynchronizeVariables. // The managed WindowsAuthenticationModule provides backward compatibility by rasing the OnAuthenticate event. WindowsPrincipal user = context.User as WindowsPrincipal; if (user != null) { // identity will be null if this is not a WindowsIdentity identity = user.Identity as WindowsIdentity; // clear Context.User for backward compatibility (it will be set in OnAuthenticate) context.SetPrincipalNoDemand(null, false /*needToSetNativePrincipal*/); } } else { String strLogonUser = context.WorkerRequest.GetServerVariable("LOGON_USER"); String strAuthType = context.WorkerRequest.GetServerVariable("AUTH_TYPE"); if (strLogonUser == null) { strLogonUser = String.Empty; } if (strAuthType == null) { strAuthType = String.Empty; } if (strLogonUser.Length == 0 && (strAuthType.Length == 0 || StringUtil.EqualsIgnoreCase(strAuthType, "basic"))) { //////////////////////////////////////////////////////// // Step 2a: Use the anonymous identity identity = _anonymousIdentity; } else { identity = new WindowsIdentity( context.WorkerRequest.GetUserToken(), strAuthType, WindowsAccountType.Normal, true); } } /////////////////////////////////////////////////////////////////////////////////// // Step 3: Call OnAuthenticate to create IPrincipal for this request. if (identity != null) { OnAuthenticate( new WindowsAuthenticationEventArgs(identity, context) ); } } internal static IPrincipal AnonymousPrincipal { get { return _anonymousPrincipal; } } internal static bool IsEnabled { get { if (!_fAuthChecked) { AuthenticationSection settings = RuntimeConfig.GetAppConfig().Authentication; settings.ValidateAuthenticationMode(); _fAuthRequired = (settings.Mode == AuthenticationMode.Windows); if (_fAuthRequired) { _anonymousIdentity = WindowsIdentity.GetAnonymous(); _anonymousPrincipal = new WindowsPrincipal(_anonymousIdentity); } _fAuthChecked = true; } return _fAuthRequired; } } } } // 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
- RelationshipEndMember.cs
- GACMembershipCondition.cs
- SspiSecurityTokenProvider.cs
- ObjectListSelectEventArgs.cs
- CompositeFontFamily.cs
- AsymmetricSignatureFormatter.cs
- CodeSnippetStatement.cs
- ServiceBusyException.cs
- WindowsTab.cs
- CustomErrorsSection.cs
- ObjectParameterCollection.cs
- BuildResultCache.cs
- DateTimeFormatInfo.cs
- StreamingContext.cs
- HtmlValidatorAdapter.cs
- EncryptedHeader.cs
- DefaultExpression.cs
- RunInstallerAttribute.cs
- TextTreeNode.cs
- HttpHostedTransportConfiguration.cs
- CredentialCache.cs
- FormsAuthenticationCredentials.cs
- SQLDoubleStorage.cs
- ResourceDescriptionAttribute.cs
- BitmapScalingModeValidation.cs
- ToolStripTemplateNode.cs
- ObjectFullSpanRewriter.cs
- ResourceDictionary.cs
- Encoding.cs
- ActionMismatchAddressingException.cs
- TransformerConfigurationWizardBase.cs
- TabPageDesigner.cs
- DbConnectionHelper.cs
- EntityProviderFactory.cs
- MDIControlStrip.cs
- Span.cs
- RequestChannel.cs
- smtppermission.cs
- BindingWorker.cs
- Interlocked.cs
- Function.cs
- PublisherMembershipCondition.cs
- GroupDescription.cs
- StreamHelper.cs
- BindingWorker.cs
- TaskFormBase.cs
- HttpEncoder.cs
- ObjectDataSourceWizardForm.cs
- TTSVoice.cs
- DoubleLinkListEnumerator.cs
- SchemaLookupTable.cs
- UrlMappingCollection.cs
- cache.cs
- CodeDirectoryCompiler.cs
- TextAutomationPeer.cs
- ResourceCategoryAttribute.cs
- Compilation.cs
- ScriptMethodAttribute.cs
- FunctionUpdateCommand.cs
- KnownTypesHelper.cs
- ConstructorBuilder.cs
- ReadWriteSpinLock.cs
- MethodBuilderInstantiation.cs
- Bold.cs
- Pts.cs
- MethodBody.cs
- StagingAreaInputItem.cs
- Module.cs
- SessionParameter.cs
- DefaultAssemblyResolver.cs
- ChainedAsyncResult.cs
- Cursor.cs
- KnownBoxes.cs
- HtmlElementEventArgs.cs
- ApplicationDirectoryMembershipCondition.cs
- XsdCachingReader.cs
- EntityKeyElement.cs
- IssuedTokenClientElement.cs
- GenerateTemporaryTargetAssembly.cs
- Property.cs
- BindableTemplateBuilder.cs
- PublisherIdentityPermission.cs
- WebPartPersonalization.cs
- TypeExtensionConverter.cs
- BuildResult.cs
- TrustLevelCollection.cs
- SmtpTransport.cs
- OutputCacheProfile.cs
- MulticastDelegate.cs
- Compress.cs
- ResolveDuplexCD1AsyncResult.cs
- counter.cs
- RolePrincipal.cs
- XmlEventCache.cs
- EmbeddedObject.cs
- CachedPathData.cs
- precedingsibling.cs
- PropertyGrid.cs
- assertwrapper.cs
- SafeSecurityHandles.cs