Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ServiceAuthorizationManager.cs / 1 / ServiceAuthorizationManager.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel { using System.Collections.Generic; using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.Collections.ObjectModel; using System.Diagnostics; using System.IdentityModel.Policy; using System.ServiceModel.Diagnostics; using System.ServiceModel.Security; public class ServiceAuthorizationManager { // This is the API called by framework to perform CheckAccess. // The API is responsible for ... // 1) Evaluate all policies (Forward\Backward) // 2) Optionally wire up the resulting AuthorizationContext // to ServiceSecurityContext. // 3) An availability of message content to make an authoritive decision. // 4) Return the authoritive decision true/false (allow/deny). public virtual bool CheckAccess(OperationContext operationContext, ref Message message) { return CheckAccess(operationContext); } public virtual bool CheckAccess(OperationContext operationContext) { if (operationContext == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operationContext"); } // default to forward-chaining implementation // 1) Get policies that will participate in chain process. // We provide a safe default policies set below. ReadOnlyCollectionauthorizationPolicies = GetAuthorizationPolicies(operationContext); // 2) Do forward chaining and wire the new ServiceSecurityContext operationContext.IncomingMessageProperties.Security.ServiceSecurityContext = new ServiceSecurityContext(authorizationPolicies ?? EmptyReadOnlyCollection .Instance); // 3) Call the CheckAccessCore return CheckAccessCore(operationContext); } // Define the set of policies taking part in chaining. We will provide // the safe default set (primary token + all supporting tokens except token with // with SecurityTokenAttachmentMode.Signed + transport token). Implementor // can override and provide different selection of policies set. protected virtual ReadOnlyCollection GetAuthorizationPolicies(OperationContext operationContext) { SecurityMessageProperty security = operationContext.IncomingMessageProperties.Security; if (security == null) { return EmptyReadOnlyCollection .Instance; } ReadOnlyCollection externalPolicies = security.ExternalAuthorizationPolicies; if (security.ServiceSecurityContext == null) { return externalPolicies ?? EmptyReadOnlyCollection .Instance; } ReadOnlyCollection authorizationPolicies = security.ServiceSecurityContext.AuthorizationPolicies; if (externalPolicies == null || externalPolicies.Count <= 0) { return authorizationPolicies; } // Combine List policies = new List (authorizationPolicies); policies.AddRange(externalPolicies); return policies.AsReadOnly(); } // Implementor overrides this API to make authoritive decision. // The AuthorizationContext in opContext is generally the result from forward chain. protected virtual bool CheckAccessCore(OperationContext operationContext) { return true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OutputBuffer.cs
- AssemblyName.cs
- OLEDB_Util.cs
- Triplet.cs
- sitestring.cs
- DoubleAverageAggregationOperator.cs
- SecurityUtils.cs
- TreeNodeClickEventArgs.cs
- DbProviderFactories.cs
- ProfileSection.cs
- AttributeData.cs
- FrameworkElement.cs
- ServicePointManagerElement.cs
- PeerNearMe.cs
- GeometryConverter.cs
- PropertyChangingEventArgs.cs
- ResourcesGenerator.cs
- GiveFeedbackEventArgs.cs
- TrackingMemoryStreamFactory.cs
- ModelUIElement3D.cs
- ChildTable.cs
- SeekStoryboard.cs
- Material.cs
- LayoutEditorPart.cs
- GlyphRunDrawing.cs
- NullableLongSumAggregationOperator.cs
- RtfToXamlLexer.cs
- DataGridViewCellCollection.cs
- Part.cs
- SqlMethodCallConverter.cs
- PauseStoryboard.cs
- NegatedCellConstant.cs
- XamlPathDataSerializer.cs
- DataGridViewRowEventArgs.cs
- ContractHandle.cs
- AssemblyNameUtility.cs
- CodeThrowExceptionStatement.cs
- CheckableControlBaseAdapter.cs
- ShapingWorkspace.cs
- COM2TypeInfoProcessor.cs
- WebPartVerbCollection.cs
- TextTreePropertyUndoUnit.cs
- RequestCacheValidator.cs
- XNodeValidator.cs
- ThicknessKeyFrameCollection.cs
- GridViewUpdatedEventArgs.cs
- BitmapEffect.cs
- NetworkInterface.cs
- MultiDataTrigger.cs
- HideDisabledControlAdapter.cs
- PassportPrincipal.cs
- PropertyAccessVisitor.cs
- UInt64Converter.cs
- SettingsBindableAttribute.cs
- DeobfuscatingStream.cs
- GridViewUpdateEventArgs.cs
- ColumnMap.cs
- ParameterEditorUserControl.cs
- BaseTreeIterator.cs
- XsltLibrary.cs
- SimpleExpression.cs
- FormCollection.cs
- Function.cs
- PackageFilter.cs
- EntityDataSourceDataSelectionPanel.cs
- ReachPageContentSerializerAsync.cs
- LocalizationComments.cs
- TextTreeTextNode.cs
- RemotingServices.cs
- HwndSourceKeyboardInputSite.cs
- BoolExpr.cs
- ModelItemExtensions.cs
- MergePropertyDescriptor.cs
- Ticks.cs
- XsltCompileContext.cs
- TdsEnums.cs
- XmlText.cs
- MenuItemStyleCollection.cs
- CipherData.cs
- WindowsPen.cs
- Int32CollectionConverter.cs
- DrawingContextDrawingContextWalker.cs
- ImageConverter.cs
- PropertyPushdownHelper.cs
- XslCompiledTransform.cs
- ScriptModule.cs
- HtmlPanelAdapter.cs
- RankException.cs
- CodeMemberMethod.cs
- commandenforcer.cs
- Site.cs
- PackagePartCollection.cs
- InputElement.cs
- Pts.cs
- Array.cs
- CopyOfAction.cs
- HostProtectionException.cs
- Subset.cs
- DebugView.cs
- BindingNavigator.cs