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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- __ComObject.cs
- ConfigurationSectionGroupCollection.cs
- ReadOnlyHierarchicalDataSource.cs
- HttpProfileGroupBase.cs
- mda.cs
- HtmlInputFile.cs
- Helper.cs
- DataServicePagingProviderWrapper.cs
- CommandBindingCollection.cs
- CalculatedColumn.cs
- Random.cs
- httpstaticobjectscollection.cs
- _NegotiateClient.cs
- CodeGotoStatement.cs
- WindowsHyperlink.cs
- PersistChildrenAttribute.cs
- CodeAttributeDeclaration.cs
- QueryCacheManager.cs
- SourceInterpreter.cs
- Select.cs
- Table.cs
- WebZone.cs
- SQLString.cs
- XmlArrayItemAttribute.cs
- TextContainerHelper.cs
- WindowsListView.cs
- TableLayoutPanel.cs
- HtmlInputFile.cs
- WebInvokeAttribute.cs
- TimeoutException.cs
- GroupDescription.cs
- ResourcePermissionBase.cs
- HttpDictionary.cs
- RecommendedAsConfigurableAttribute.cs
- AssemblyAttributesGoHere.cs
- securitycriticaldataformultiplegetandset.cs
- WebPartDeleteVerb.cs
- InputReportEventArgs.cs
- SchemaEntity.cs
- AsyncResult.cs
- ExpandCollapsePatternIdentifiers.cs
- ConfigsHelper.cs
- StreamWriter.cs
- TablePattern.cs
- ClientConvert.cs
- PropertyValueChangedEvent.cs
- FontFamilyValueSerializer.cs
- TableItemPatternIdentifiers.cs
- BitmapEffectInput.cs
- PasswordRecoveryAutoFormat.cs
- DataGridViewSelectedRowCollection.cs
- AutomationTextAttribute.cs
- ImageDesigner.cs
- DrawingContextWalker.cs
- _HeaderInfoTable.cs
- SqlNotificationEventArgs.cs
- Transform3D.cs
- GeometryCombineModeValidation.cs
- DataSvcMapFile.cs
- XmlAtomicValue.cs
- PrimitiveType.cs
- SEHException.cs
- UshortList2.cs
- DbConnectionPoolGroupProviderInfo.cs
- ServicesUtilities.cs
- FamilyCollection.cs
- BaseResourcesBuildProvider.cs
- RectangleF.cs
- ProfileEventArgs.cs
- SortedDictionary.cs
- DataControlFieldCollection.cs
- DetailsViewDesigner.cs
- TextDocumentView.cs
- MasterPageParser.cs
- TextRunProperties.cs
- RuntimeResourceSet.cs
- DisplayInformation.cs
- ToolStripDropDownItem.cs
- ConfigurationProviderException.cs
- DataSourceCacheDurationConverter.cs
- FileDialog_Vista_Interop.cs
- ParseHttpDate.cs
- PropertyChangedEventManager.cs
- MiniLockedBorderGlyph.cs
- IIS7UserPrincipal.cs
- QueryResponse.cs
- BackgroundFormatInfo.cs
- RenderDataDrawingContext.cs
- GuidTagList.cs
- HMACSHA256.cs
- ComPlusServiceLoader.cs
- TdsParser.cs
- HtmlContainerControl.cs
- RegularExpressionValidator.cs
- BasicExpressionVisitor.cs
- MissingSatelliteAssemblyException.cs
- SmtpNetworkElement.cs
- ImportContext.cs
- TextDocumentView.cs
- FormsIdentity.cs