//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ /***************************************************************************** From machine.config ******************************************************************************/ namespace System.Web.Configuration { using System; using System.Xml; using System.Configuration; using System.Collections.Specialized; using System.Collections; using System.Globalization; using System.IO; using System.Text; using System.Web.Util; using System.ComponentModel; using System.Security.Permissions; public sealed class AuthenticationSection : ConfigurationSection { private static ConfigurationPropertyCollection _properties; private static readonly ConfigurationProperty _propForms = new ConfigurationProperty("forms", typeof(FormsAuthenticationConfiguration), null, ConfigurationPropertyOptions.None); #pragma warning disable 618 // Dev10 570002: This property is obsolete. The Passport authentication product is no longer supported and has been superseded by Live ID. private static readonly ConfigurationProperty _propPassport = new ConfigurationProperty("passport", typeof(PassportAuthentication), null, ConfigurationPropertyOptions.None); #pragma warning restore 618 private static readonly ConfigurationProperty _propMode = new ConfigurationProperty("mode", typeof(AuthenticationMode), AuthenticationMode.Windows, ConfigurationPropertyOptions.None); static AuthenticationSection() { // Property initialization _properties = new ConfigurationPropertyCollection(); _properties.Add(_propForms); _properties.Add(_propPassport); _properties.Add(_propMode); } private bool authenticationModeCached = false; private AuthenticationMode authenticationModeCache; public AuthenticationSection() { } protected override ConfigurationPropertyCollection Properties { get { return _properties; } } [ConfigurationProperty("forms")] public FormsAuthenticationConfiguration Forms { get { return (FormsAuthenticationConfiguration)base[_propForms]; } } [ConfigurationProperty("passport")] [Obsolete("This property is obsolete. The Passport authentication product is no longer supported and has been superseded by Live ID.")] public PassportAuthentication Passport { get { #pragma warning disable 618 return (PassportAuthentication)base[_propPassport]; #pragma warning restore 618 } } [ConfigurationProperty("mode", DefaultValue = AuthenticationMode.Windows)] public AuthenticationMode Mode { get { if (authenticationModeCached == false) { authenticationModeCache = (AuthenticationMode)base[_propMode]; authenticationModeCached = true; } return authenticationModeCache; } set { base[_propMode] = value; authenticationModeCache = value; } } protected override void Reset(ConfigurationElement parentElement) { base.Reset(parentElement); authenticationModeCached = false; } // this should only happen at runtime since the design time machine does not // need Passport installed to configure the server. internal void ValidateAuthenticationMode() { #pragma warning disable 618 if (Mode == AuthenticationMode.Passport && UnsafeNativeMethods.PassportVersion() < 0) { #pragma warning restore 618 throw new ConfigurationErrorsException(SR.GetString(SR.Passport_not_installed)); } } } }