Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / AspNetPartialTrustHelpers.cs / 1305376 / AspNetPartialTrustHelpers.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System.Runtime; using System.Security; using System.Security.Permissions; using System.Threading; using System.Web; static class AspNetPartialTrustHelpers { [Fx.Tag.SecurityNote(Critical = "Caches the PermissionSet associated with the asp.net trust level." + "This will not change over the life of the AppDomain.")] [SecurityCritical] static SecurityContext aspNetSecurityContext; [Fx.Tag.SecurityNote(Critical = "If erroneously set to true, could bypass the PermitOnly.")] [SecurityCritical] static bool isInitialized; [Fx.Tag.SecurityNote(Miscellaneous = "RequiresReview - determines if the given PermissionSet is full trust." + "We will base subsequent security decisions on this.")] static bool IsFullTrust(PermissionSet perms) { return perms == null || perms.IsUnrestricted(); } internal static bool NeedPartialTrustInvoke { [Fx.Tag.SecurityNote(Critical = "Makes a security sensitive decision, updates aspNetSecurityContext and isInitialized.", Safe = "Ok to know whether the ASP app is partial trust.")] [SecuritySafeCritical] get { if (!isInitialized) { NamedPermissionSet aspNetPermissionSet = GetHttpRuntimeNamedPermissionSet(); if (!IsFullTrust(aspNetPermissionSet)) { try { aspNetPermissionSet.PermitOnly(); aspNetSecurityContext = System.Runtime.PartialTrustHelpers.CaptureSecurityContextNoIdentityFlow(); } finally { CodeAccessPermission.RevertPermitOnly(); } } isInitialized = true; } return aspNetSecurityContext != null; } } [Fx.Tag.SecurityNote(Critical = "Asserts AspNetHostingPermission.")] [SecurityCritical] [AspNetHostingPermission(SecurityAction.Assert, Level=AspNetHostingPermissionLevel.Unrestricted)] static NamedPermissionSet GetHttpRuntimeNamedPermissionSet() { return HttpRuntime.GetNamedPermissionSet(); } [Fx.Tag.SecurityNote(Critical = "Touches aspNetSecurityContext.", Safe = "Ok to invoke the user's delegate under the PT context.")] [SecuritySafeCritical] internal static void PartialTrustInvoke(ContextCallback callback, object state) { if (NeedPartialTrustInvoke) { SecurityContext.Run(aspNetSecurityContext.CreateCopy(), callback, state); } else { callback(state); } } } } // 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
- GreenMethods.cs
- PrincipalPermission.cs
- CfgRule.cs
- ResourcePool.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- AllMembershipCondition.cs
- EventLogTraceListener.cs
- UrlPath.cs
- Gdiplus.cs
- MILUtilities.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- AlphabeticalEnumConverter.cs
- Geometry3D.cs
- IndexingContentUnit.cs
- TypeExtensionSerializer.cs
- ContextProperty.cs
- SettingsProperty.cs
- FlowDocumentReader.cs
- BinaryFormatterSinks.cs
- FileUtil.cs
- UInt32Converter.cs
- EventLogPermissionEntryCollection.cs
- DeploymentSection.cs
- Interlocked.cs
- RegistryKey.cs
- ImagingCache.cs
- ReadOnlyNameValueCollection.cs
- NamespaceList.cs
- GuidTagList.cs
- ByteRangeDownloader.cs
- UnorderedHashRepartitionStream.cs
- IpcClientManager.cs
- DataGridTable.cs
- BaseValidator.cs
- ScriptManagerProxy.cs
- CalendarDateRangeChangingEventArgs.cs
- PerfCounters.cs
- HostProtectionPermission.cs
- RawKeyboardInputReport.cs
- SqlLiftIndependentRowExpressions.cs
- LinkClickEvent.cs
- ParseNumbers.cs
- DbConnectionPoolCounters.cs
- CompareValidator.cs
- StrokeSerializer.cs
- StatusBarDrawItemEvent.cs
- LinearGradientBrush.cs
- BrowserCapabilitiesFactoryBase.cs
- ConvertEvent.cs
- Point4D.cs
- MenuItemBindingCollection.cs
- ComboBoxItem.cs
- OleDbConnectionInternal.cs
- HttpException.cs
- ChineseLunisolarCalendar.cs
- HeaderPanel.cs
- DrawListViewSubItemEventArgs.cs
- AutomationElementIdentifiers.cs
- IdentityReference.cs
- EdmItemCollection.cs
- InputLanguageEventArgs.cs
- LogStream.cs
- CurrencyWrapper.cs
- DataGridViewCellStyleBuilderDialog.cs
- CurrentChangedEventManager.cs
- SafeRightsManagementPubHandle.cs
- AuthenticationSection.cs
- CategoryAttribute.cs
- mansign.cs
- SqlServices.cs
- CodeCommentStatement.cs
- StateChangeEvent.cs
- TextDecoration.cs
- XmlEnumAttribute.cs
- SqlNode.cs
- RegistrySecurity.cs
- remotingproxy.cs
- login.cs
- CompensationDesigner.cs
- UserMapPath.cs
- SmtpMail.cs
- __Filters.cs
- _Events.cs
- ThemeInfoAttribute.cs
- BindableAttribute.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- ObjectListItem.cs
- ParameterBuilder.cs
- InputManager.cs
- EncodingInfo.cs
- Win32.cs
- RequiredAttributeAttribute.cs
- ThreadInterruptedException.cs
- DBPropSet.cs
- ListenDesigner.cs
- SqlGenericUtil.cs
- BuilderPropertyEntry.cs
- SerializationObjectManager.cs
- SimpleExpression.cs
- HideDisabledControlAdapter.cs