//------------------------------------------------------------------------------ // <copyright file="RoleManagerSection.cs" company="Microsoft"> // Copyright (c) Microsoft Corporation. All rights reserved. // </copyright> //------------------------------------------------------------------------------ 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.ComponentModel; using System.Web.Security; // for CookieProtection Enum using System.Security.Permissions; /* <!-- Configuration for roleManager: enabled="[true|false]" Feature is enabled? cacheRolesInCookie="[true|false]" Cache roles in cookie? cookieName=".ASPXROLES" Cookie Name createPersistentCookie="[true|false]" Creates a persistent cookie or session cookie? cookieTimeout="30" Cookie Timeout cookiePath="/" Cookie Path cookieRequireSSL="[true|false]" Set Secure bit in Cookie cookieSlidingExpiration="[true|false]" Reissue expiring cookies? cookieProtection="[None|Validation|Encryption|All]" How to protect cookies from being read/tampered defaultProvider="string" Name of provider to use by default domain="[domain]" Enables output of the "domain" cookie attribute set to the specified value maxCachedResults="int" Maximum number of roles to cache in cookie Child nodes: <providers> Providers (class must inherit from RoleProvider) <add Add a provider name="string" Name to identify this provider instance by type="string" Class that implements RoleProvider provider-specific-configuration /> <remove Remove a provider name="string" /> Name of provider to remove <clear/> Remove all providers </providers> <providers> type="TypeName" Class that inherits from System.Web.Security.RoleProvider providerSpecificConfig Config for the provider Configuration for SqlRoleProvider and AccessRoleProvider: connectionStringName="string" Name corresponding to the entry in <connectionStrings> section where the connection string for the provider is specified description="string" Description of what the provider does commandTimeout="int" Command timeout value for SQL command Configuration for AuthorizationStoreProvider: connectionStringName="string" Name corresponding to the entry in <connectionStrings> section where the connection string for the provider is specified description="string" Description of what the provider does cacheRefreshInterval="int" The number of minutes between forced refreshes of the cached policy store data Configuration for WindowsTokenRoleProvider: description="string" Description of what the provider does --> <roleManager enabled="false" cacheRolesInCookie="false" cookieName=".ASPXROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" createPersistentCookie="false" cookieProtection="All" defaultProvider="AspNetSqlRoleProvider" domain="" > <providers> <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=%ASSEMBLY_VERSION%, Culture=neutral, PublicKeyToken=%MICROSOFT_PUBLICKEY%" connectionStringName="LocalSqlServer" applicationName="/" description="Stores and retrieves roles data from the local Microsoft SQL Server database" /> <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=%ASSEMBLY_VERSION%, Culture=neutral, PublicKeyToken=%MICROSOFT_PUBLICKEY%" description="Retrieves roles data from the Windows authenticated token for the request" /> <add name="AspNetAuthorizationStoreRoleProvider" type="System.Web.Security.AuthorizationRoleProvider, System.Web, Version=%ASSEMBLY_VERSION%, Culture=neutral, PublicKeyToken=%MICROSOFT_PUBLICKEY%" connectionStringName="AuthorizationStore" cacheRefreshInterval="60" applicationName="MyApplication" scopeName="MyScope" description="Stores and retrieves roles data from the authorization store" /> </providers> </roleManager> */ public sealed class RoleManagerSection : ConfigurationSection { private static ConfigurationPropertyCollection _properties; private static readonly ConfigurationProperty _propEnabled = new ConfigurationProperty("enabled", typeof(bool), false, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propUseCookies = new ConfigurationProperty("cacheRolesInCookie", typeof(bool), false, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCookieName = new ConfigurationProperty("cookieName", typeof(string), ".ASPXROLES", StdValidatorsAndConverters.WhiteSpaceTrimStringConverter, StdValidatorsAndConverters.NonEmptyStringValidator, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCookieTimeout = new ConfigurationProperty("cookieTimeout", typeof(TimeSpan), TimeSpan.FromMinutes(30.0), StdValidatorsAndConverters.TimeSpanMinutesOrInfiniteConverter, StdValidatorsAndConverters.PositiveTimeSpanValidator, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCookiePath = new ConfigurationProperty("cookiePath", typeof(string), "/", StdValidatorsAndConverters.WhiteSpaceTrimStringConverter, StdValidatorsAndConverters.NonEmptyStringValidator, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCookieRequireSSL = new ConfigurationProperty("cookieRequireSSL", typeof(bool), false, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCookieSlidingExpiration = new ConfigurationProperty("cookieSlidingExpiration", typeof(bool), true, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCookieProtection = new ConfigurationProperty("cookieProtection", typeof(CookieProtection), CookieProtection.All, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propDefaultProvider = new ConfigurationProperty("defaultProvider", typeof(string), "AspNetSqlRoleProvider", null, StdValidatorsAndConverters.NonEmptyStringValidator, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propProviders = new ConfigurationProperty("providers", typeof(ProviderSettingsCollection), null, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propCreatePersistentCookie = new ConfigurationProperty("createPersistentCookie", typeof(bool), false, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propDomain = new ConfigurationProperty("domain", typeof(string), null, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propMaxCachedResults = new ConfigurationProperty("maxCachedResults", typeof(int), 25, ConfigurationPropertyOptions.None); private enum InheritedType { inNeither = 0, inParent = 1, inSelf = 2, inBothSame = 3, inBothDiff = 4, } static RoleManagerSection() { // Property initialization _properties = new ConfigurationPropertyCollection(); _properties.Add(_propEnabled); _properties.Add(_propUseCookies); _properties.Add(_propCookieName); _properties.Add(_propCookieTimeout); _properties.Add(_propCookiePath); _properties.Add(_propCookieRequireSSL); _properties.Add(_propCookieSlidingExpiration); _properties.Add(_propCookieProtection); _properties.Add(_propDefaultProvider); _properties.Add(_propProviders); _properties.Add(_propCreatePersistentCookie); _properties.Add(_propDomain); _properties.Add(_propMaxCachedResults); } public RoleManagerSection() { } protected override ConfigurationPropertyCollection Properties { get { return _properties; } } [ConfigurationProperty("enabled", DefaultValue = false)] public bool Enabled { get { return (bool)base[_propEnabled]; } set { base[_propEnabled] = value; } } [ConfigurationProperty("createPersistentCookie", DefaultValue = false)] public bool CreatePersistentCookie { get { return (bool)base[_propCreatePersistentCookie]; } set { base[_propCreatePersistentCookie] = value; } } [ConfigurationProperty("cacheRolesInCookie", DefaultValue = false)] public bool CacheRolesInCookie { get { return (bool)base[_propUseCookies]; } set { base[_propUseCookies] = value; } } [ConfigurationProperty("cookieName", DefaultValue = ".ASPXROLES")] [TypeConverter(typeof(WhiteSpaceTrimStringConverter))] [StringValidator(MinLength = 1)] public string CookieName { get { return (string)base[_propCookieName]; } set { base[_propCookieName] = value; } } [ConfigurationProperty("cookieTimeout", DefaultValue = "00:30:00")] [TypeConverter(typeof(TimeSpanMinutesOrInfiniteConverter))] [TimeSpanValidator(MinValueString="00:00:00", MaxValueString=TimeSpanValidatorAttribute.TimeSpanMaxValue)] public TimeSpan CookieTimeout { get { return (TimeSpan)base[_propCookieTimeout]; } set { base[_propCookieTimeout] = value; } } [ConfigurationProperty("cookiePath", DefaultValue = "/")] [TypeConverter(typeof(WhiteSpaceTrimStringConverter))] [StringValidator(MinLength = 1)] public string CookiePath { get { return (string)base[_propCookiePath]; } set { base[_propCookiePath] = value; } } [ConfigurationProperty("cookieRequireSSL", DefaultValue = false)] public bool CookieRequireSSL { get { return (bool)base[_propCookieRequireSSL]; } set { base[_propCookieRequireSSL] = value; } } [ConfigurationProperty("cookieSlidingExpiration", DefaultValue = true)] public bool CookieSlidingExpiration { get { return (bool)base[_propCookieSlidingExpiration]; } set { base[_propCookieSlidingExpiration] = value; } } [ConfigurationProperty("cookieProtection", DefaultValue = CookieProtection.All)] public CookieProtection CookieProtection { get { return (CookieProtection)base[_propCookieProtection]; } set { base[_propCookieProtection] = value; } } [ConfigurationProperty("defaultProvider", DefaultValue = "AspNetSqlRoleProvider")] [TypeConverter(typeof(WhiteSpaceTrimStringConverter))] [StringValidator(MinLength = 1)] public string DefaultProvider { get { return (string)base[_propDefaultProvider]; } set { base[_propDefaultProvider] = value; } } [ConfigurationProperty("providers")] public ProviderSettingsCollection Providers { get { return (ProviderSettingsCollection)base[_propProviders]; } } [ConfigurationProperty("domain")] public string Domain { get { return (string)base[_propDomain]; } set { base[_propDomain] = value; } } [ConfigurationProperty("maxCachedResults", DefaultValue = 25)] public int MaxCachedResults { get { return (int)base[_propMaxCachedResults]; } set { base[_propMaxCachedResults] = value; } } } // class RoleManagerSection }