Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / BasicHttpMessageSecurity.cs / 1 / BasicHttpMessageSecurity.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System.Net.Security; using System.ServiceModel.Channels; using System.ServiceModel.Security; using System.ServiceModel.Security.Tokens; public sealed class BasicHttpMessageSecurity { internal const BasicHttpMessageCredentialType DefaultClientCredentialType = BasicHttpMessageCredentialType.UserName; BasicHttpMessageCredentialType clientCredentialType; SecurityAlgorithmSuite algorithmSuite; internal BasicHttpMessageSecurity() { clientCredentialType = DefaultClientCredentialType; algorithmSuite = SecurityAlgorithmSuite.Default; } public BasicHttpMessageCredentialType ClientCredentialType { get { return this.clientCredentialType; } set { if (!BasicHttpMessageCredentialTypeHelper.IsDefined(value)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value")); } this.clientCredentialType = value; } } public SecurityAlgorithmSuite AlgorithmSuite { get { return this.algorithmSuite; } set { if (value == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); } this.algorithmSuite = value; } } // if any changes are made to this method, please reflect them in the corresponding TryCrete() method internal SecurityBindingElement CreateMessageSecurity(bool isSecureTransportMode) { SecurityBindingElement result; if (isSecureTransportMode) { MessageSecurityVersion version = MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10; switch (this.clientCredentialType) { case BasicHttpMessageCredentialType.Certificate: result = SecurityBindingElement.CreateCertificateOverTransportBindingElement(version); break; case BasicHttpMessageCredentialType.UserName: result = SecurityBindingElement.CreateUserNameOverTransportBindingElement(); result.MessageSecurityVersion = version; break; default: DiagnosticUtility.DebugAssert("Unsupported basic http message credential type"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } else { if (this.clientCredentialType != BasicHttpMessageCredentialType.Certificate) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.BasicHttpMessageSecurityRequiresCertificate))); } result = SecurityBindingElement.CreateMutualCertificateBindingElement(MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10, true); } result.DefaultAlgorithmSuite = this.AlgorithmSuite; result.SecurityHeaderLayout = SecurityHeaderLayout.Lax; result.SetKeyDerivation(false); result.DoNotEmitTrust = true; return result; } // This method reverses the CreateMessageSecurity(bool) method internal static bool TryCreate(SecurityBindingElement sbe, out BasicHttpMessageSecurity security, out bool isSecureTransportMode) { DiagnosticUtility.DebugAssert(null != sbe, string.Empty); security = null; isSecureTransportMode = false; if (sbe.DoNotEmitTrust == false) return false; if (!sbe.IsSetKeyDerivation(false)) return false; if (sbe.SecurityHeaderLayout != SecurityHeaderLayout.Lax) return false; if (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10) return false; BasicHttpMessageCredentialType credentialType; if (!SecurityBindingElement.IsMutualCertificateBinding(sbe, true)) { isSecureTransportMode = true; if (SecurityBindingElement.IsCertificateOverTransportBinding(sbe)) { credentialType = BasicHttpMessageCredentialType.Certificate; } else if (SecurityBindingElement.IsUserNameOverTransportBinding(sbe)) { credentialType = BasicHttpMessageCredentialType.UserName; } else { return false; } } else { credentialType = BasicHttpMessageCredentialType.Certificate; } security = new BasicHttpMessageSecurity(); security.ClientCredentialType = credentialType; security.AlgorithmSuite = sbe.DefaultAlgorithmSuite; 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
- LocalizabilityAttribute.cs
- HttpModuleActionCollection.cs
- ACL.cs
- KnownTypesHelper.cs
- SeparatorAutomationPeer.cs
- TextServicesDisplayAttribute.cs
- StringWriter.cs
- FunctionDefinition.cs
- TraceListener.cs
- DataGridViewRowHeaderCell.cs
- OutputWindow.cs
- MemberDomainMap.cs
- PageAsyncTaskManager.cs
- RewritingSimplifier.cs
- SqlSupersetValidator.cs
- Preprocessor.cs
- RoleGroupCollection.cs
- MimePart.cs
- FunctionDefinition.cs
- TextTabProperties.cs
- DesignTimeType.cs
- ClientScriptManagerWrapper.cs
- RtfControls.cs
- WebPartDescription.cs
- CryptoStream.cs
- SimpleApplicationHost.cs
- TreeViewItemAutomationPeer.cs
- PeerToPeerException.cs
- ListSortDescription.cs
- XNameConverter.cs
- _ContextAwareResult.cs
- TagMapCollection.cs
- XmlMembersMapping.cs
- TextMarkerSource.cs
- Table.cs
- RequestCachingSection.cs
- SqlMethodTransformer.cs
- ValidationPropertyAttribute.cs
- PathFigure.cs
- XmlDataLoader.cs
- HttpResponseWrapper.cs
- BaseDataListActionList.cs
- ToolStrip.cs
- ObjectContext.cs
- BitStream.cs
- OperatorExpressions.cs
- EventLogPermission.cs
- ErrorFormatter.cs
- ClipboardData.cs
- BasePattern.cs
- ObjectItemConventionAssemblyLoader.cs
- DataGridColumn.cs
- XmlException.cs
- WebBrowserPermission.cs
- DataContractSerializerSection.cs
- HebrewCalendar.cs
- ComponentResourceKeyConverter.cs
- ArgumentNullException.cs
- ListSortDescriptionCollection.cs
- GraphicsContext.cs
- Int32Rect.cs
- DataGridViewButtonCell.cs
- MetaTable.cs
- ResourceReferenceExpressionConverter.cs
- CapiNative.cs
- HttpCacheParams.cs
- ConnectionsZoneDesigner.cs
- WebPartVerb.cs
- mediaeventargs.cs
- AggregateException.cs
- DataDocumentXPathNavigator.cs
- PerformanceCounterCategory.cs
- AnnotationDocumentPaginator.cs
- SetterTriggerConditionValueConverter.cs
- ModelToObjectValueConverter.cs
- EntitySetBaseCollection.cs
- RoleManagerModule.cs
- EdmSchemaAttribute.cs
- OracleCommand.cs
- ToolStripDropDownClosedEventArgs.cs
- KeyValueSerializer.cs
- IncrementalReadDecoders.cs
- WebPartDisplayModeCollection.cs
- Formatter.cs
- Publisher.cs
- XamlSerializationHelper.cs
- CookielessHelper.cs
- BookmarkResumptionRecord.cs
- ProviderConnectionPoint.cs
- Version.cs
- DataServiceProcessingPipelineEventArgs.cs
- DataKey.cs
- xmlglyphRunInfo.cs
- TimeEnumHelper.cs
- StringFreezingAttribute.cs
- TextBox.cs
- EntityTypeBase.cs
- CannotUnloadAppDomainException.cs
- ReliableDuplexSessionChannel.cs
- SpeechAudioFormatInfo.cs