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
- HttpWrapper.cs
- BevelBitmapEffect.cs
- ClassData.cs
- ComboBox.cs
- XmlDictionaryWriter.cs
- LongMinMaxAggregationOperator.cs
- HwndMouseInputProvider.cs
- HierarchicalDataSourceConverter.cs
- DispatchWrapper.cs
- SmiConnection.cs
- BooleanFacetDescriptionElement.cs
- ThrowHelper.cs
- DataIdProcessor.cs
- PriorityQueue.cs
- ScrollEventArgs.cs
- MouseDevice.cs
- QueryCacheKey.cs
- HashCodeCombiner.cs
- MemoryMappedViewStream.cs
- DocumentEventArgs.cs
- SinglePageViewer.cs
- Vector3DValueSerializer.cs
- ScriptControl.cs
- ControlBindingsCollection.cs
- CqlGenerator.cs
- TextBoxBaseDesigner.cs
- HitTestDrawingContextWalker.cs
- XmlSerializerNamespaces.cs
- XmlSerializer.cs
- XamlSerializerUtil.cs
- DataBoundControlAdapter.cs
- AssemblyLoader.cs
- SchemaCollectionCompiler.cs
- BatchStream.cs
- TreeNodeConverter.cs
- ZoomPercentageConverter.cs
- ThousandthOfEmRealPoints.cs
- DataContractAttribute.cs
- WebPartDisplayModeEventArgs.cs
- SmiTypedGetterSetter.cs
- DataGridViewComboBoxCell.cs
- Rights.cs
- FileDialogCustomPlacesCollection.cs
- DataException.cs
- CheckedPointers.cs
- AssemblyGen.cs
- Part.cs
- HasCopySemanticsAttribute.cs
- Subset.cs
- HyperLink.cs
- StoreContentChangedEventArgs.cs
- Block.cs
- StackBuilderSink.cs
- PolicyManager.cs
- WebServiceEnumData.cs
- ThreadPool.cs
- HttpNamespaceReservationInstallComponent.cs
- tabpagecollectioneditor.cs
- AlgoModule.cs
- HeaderCollection.cs
- ToolStripItemClickedEventArgs.cs
- QuaternionRotation3D.cs
- ScrollProperties.cs
- SecurityTokenResolver.cs
- EventSource.cs
- DbProviderConfigurationHandler.cs
- Helpers.cs
- KerberosSecurityTokenParameters.cs
- CustomTypeDescriptor.cs
- BitmapSizeOptions.cs
- SplitterPanel.cs
- DbDataReader.cs
- DefaultTraceListener.cs
- Rectangle.cs
- XmlValidatingReader.cs
- MetadataArtifactLoader.cs
- IList.cs
- OverflowException.cs
- InvalidCommandTreeException.cs
- ConfigXmlWhitespace.cs
- DescendentsWalker.cs
- DataView.cs
- TagMapInfo.cs
- DataShape.cs
- PageTheme.cs
- RawTextInputReport.cs
- WinInetCache.cs
- SafeRightsManagementSessionHandle.cs
- MarshalDirectiveException.cs
- ClientConfigurationHost.cs
- SafeRightsManagementEnvironmentHandle.cs
- HtmlLinkAdapter.cs
- StrongNameKeyPair.cs
- ZipIOLocalFileBlock.cs
- XmlSchemaExporter.cs
- IgnoreFileBuildProvider.cs
- WaitHandle.cs
- DefaultValueTypeConverter.cs
- QilInvoke.cs
- AutoResetEvent.cs