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
- Style.cs
- AssociationTypeEmitter.cs
- StreamInfo.cs
- TypeConverter.cs
- PropertyRecord.cs
- XmlSchemaSimpleTypeUnion.cs
- EditorZoneDesigner.cs
- WindowsListViewItemCheckBox.cs
- ListParagraph.cs
- TextSelection.cs
- HealthMonitoringSectionHelper.cs
- DrawItemEvent.cs
- Boolean.cs
- Rfc2898DeriveBytes.cs
- TextReader.cs
- BitHelper.cs
- SqlCacheDependencyDatabase.cs
- ProbeMatches11.cs
- NumberFormatInfo.cs
- Solver.cs
- CustomErrorCollection.cs
- TemplateManager.cs
- EncoderNLS.cs
- BitmapEncoder.cs
- DeploymentSectionCache.cs
- ValidatingReaderNodeData.cs
- SettingsPropertyValueCollection.cs
- InfiniteTimeSpanConverter.cs
- formatter.cs
- DataShape.cs
- DateTimeValueSerializer.cs
- EntityDataSourceColumn.cs
- DefaultObjectMappingItemCollection.cs
- PackagingUtilities.cs
- ProxyManager.cs
- DataRowCollection.cs
- InputReport.cs
- Compress.cs
- CharStorage.cs
- ServerValidateEventArgs.cs
- LinqDataSourceEditData.cs
- DropShadowBitmapEffect.cs
- TypeHelpers.cs
- XmlSchemas.cs
- ClientTargetCollection.cs
- ZoomPercentageConverter.cs
- UInt32Converter.cs
- TokenBasedSetEnumerator.cs
- ToggleButtonAutomationPeer.cs
- DispatcherObject.cs
- SqlNodeAnnotations.cs
- CorrelationService.cs
- EdmFunctions.cs
- ManagementObject.cs
- ComEventsMethod.cs
- CacheDependency.cs
- DynamicRendererThreadManager.cs
- InputBindingCollection.cs
- TreeViewCancelEvent.cs
- NonParentingControl.cs
- Events.cs
- PartitionedDataSource.cs
- DeviceContext.cs
- CallContext.cs
- CodeTypeConstructor.cs
- AutoResetEvent.cs
- UIElementPropertyUndoUnit.cs
- Types.cs
- FileSystemInfo.cs
- XmlQueryTypeFactory.cs
- XmlArrayItemAttribute.cs
- XmlILOptimizerVisitor.cs
- SymbolDocumentInfo.cs
- TableRow.cs
- SequentialUshortCollection.cs
- PropertySourceInfo.cs
- InternalConfigRoot.cs
- MetaType.cs
- DescendantBaseQuery.cs
- NetworkInformationPermission.cs
- DesignerDataParameter.cs
- PageContentCollection.cs
- ComboBoxDesigner.cs
- MemberMaps.cs
- SystemInfo.cs
- ImageSource.cs
- RoleManagerEventArgs.cs
- MarkupWriter.cs
- XmlSchemaValidationException.cs
- SystemIPGlobalProperties.cs
- UnicodeEncoding.cs
- ExpressionVisitor.cs
- Material.cs
- EventlogProvider.cs
- WebServiceErrorEvent.cs
- DataBindingExpressionBuilder.cs
- Color.cs
- XmlSchemaImporter.cs
- WebPartActionVerb.cs
- _NetRes.cs