Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------ // 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
- UrlAuthFailedErrorFormatter.cs
- GetPageNumberCompletedEventArgs.cs
- ToggleButton.cs
- ResourceExpressionEditor.cs
- sqlser.cs
- MultiPageTextView.cs
- BitmapEffectRenderDataResource.cs
- WebDescriptionAttribute.cs
- FloatSumAggregationOperator.cs
- SectionInput.cs
- OutKeywords.cs
- MetadataCollection.cs
- EtwTrace.cs
- FamilyMapCollection.cs
- DbProviderFactories.cs
- TemplateBindingExpressionConverter.cs
- SolidBrush.cs
- XsltSettings.cs
- DesignSurfaceEvent.cs
- HtmlTableCell.cs
- ClaimSet.cs
- SafeEventLogWriteHandle.cs
- Light.cs
- CryptoSession.cs
- PointUtil.cs
- DelimitedListTraceListener.cs
- EnumValAlphaComparer.cs
- TextShapeableCharacters.cs
- XmlSerializerNamespaces.cs
- IBuiltInEvidence.cs
- XXXOnTypeBuilderInstantiation.cs
- sqlnorm.cs
- DataGridViewColumnConverter.cs
- TablePattern.cs
- DateTimeConverter.cs
- ParserStreamGeometryContext.cs
- StorageBasedPackageProperties.cs
- ToolboxDataAttribute.cs
- ObjectDataSourceEventArgs.cs
- IdentityManager.cs
- XmlUnspecifiedAttribute.cs
- TypeUsageBuilder.cs
- CheckBoxPopupAdapter.cs
- PlaceHolder.cs
- HtmlControl.cs
- ProxyOperationRuntime.cs
- DataGridRow.cs
- PathGradientBrush.cs
- AppDomainCompilerProxy.cs
- CombinedGeometry.cs
- Pair.cs
- SkinBuilder.cs
- AsymmetricSignatureFormatter.cs
- XmlObjectSerializerContext.cs
- Stacktrace.cs
- SecurityState.cs
- ToolStripScrollButton.cs
- ClipboardProcessor.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- XmlSchemaParticle.cs
- TransformedBitmap.cs
- TreeNodeCollection.cs
- QilCloneVisitor.cs
- ListViewUpdateEventArgs.cs
- AssemblyCache.cs
- UIElementIsland.cs
- VisualTreeHelper.cs
- SecurityManager.cs
- HtmlTitle.cs
- TogglePattern.cs
- HopperCache.cs
- MenuItemStyleCollectionEditor.cs
- XmlSerializerAssemblyAttribute.cs
- CanonicalFontFamilyReference.cs
- RequestSecurityToken.cs
- AlternateView.cs
- ImmComposition.cs
- PropertyReferenceExtension.cs
- Border.cs
- BrushValueSerializer.cs
- KeyMatchBuilder.cs
- IntPtr.cs
- SynchronizedDispatch.cs
- DataGridViewLinkCell.cs
- MatrixCamera.cs
- MethodBody.cs
- LoadWorkflowAsyncResult.cs
- OracleException.cs
- _ProxyRegBlob.cs
- CaseExpr.cs
- StorageComplexPropertyMapping.cs
- WebPermission.cs
- ClassHandlersStore.cs
- ContractMethodParameterInfo.cs
- DbConnectionInternal.cs
- WindowsFormsHostAutomationPeer.cs
- EventDescriptorCollection.cs
- XslAstAnalyzer.cs
- DynamicILGenerator.cs
- StorageConditionPropertyMapping.cs