e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
339 lines
16 KiB
C#
339 lines
16 KiB
C#
//------------------------------------------------------------------------------
|
|
// <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
|
|
}
|