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
- StringSource.cs
- DeclarativeExpressionConditionDeclaration.cs
- TextServicesContext.cs
- XmlName.cs
- SvcMapFileSerializer.cs
- ACL.cs
- RootBrowserWindow.cs
- DispatcherObject.cs
- PlaceHolder.cs
- SystemBrushes.cs
- Accessible.cs
- ReadOnlyDataSourceView.cs
- QuaternionValueSerializer.cs
- RegexWorker.cs
- ArrayExtension.cs
- HttpAsyncResult.cs
- FreezableCollection.cs
- QueryPageSettingsEventArgs.cs
- Assign.cs
- PerfCounters.cs
- WebBrowserNavigatedEventHandler.cs
- ImageFormatConverter.cs
- NumericUpDown.cs
- SystemDiagnosticsSection.cs
- Thread.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- UpdateRecord.cs
- Parser.cs
- TableLayoutPanel.cs
- Formatter.cs
- DataColumnChangeEvent.cs
- SqlDataAdapter.cs
- SqlNodeAnnotation.cs
- RuntimeHandles.cs
- HttpApplicationFactory.cs
- PointAnimationBase.cs
- VersionPair.cs
- FrameworkContentElementAutomationPeer.cs
- CssTextWriter.cs
- MissingMemberException.cs
- Instrumentation.cs
- FlowDocumentPaginator.cs
- InternalConfigRoot.cs
- AsyncOperationContext.cs
- ResXResourceWriter.cs
- MonitorWrapper.cs
- EndPoint.cs
- SinglePageViewer.cs
- TreeView.cs
- EntityClientCacheKey.cs
- AutoGeneratedField.cs
- WindowsToolbarItemAsMenuItem.cs
- BindingMAnagerBase.cs
- WaitForChangedResult.cs
- OracleTransaction.cs
- MarshalDirectiveException.cs
- validation.cs
- GraphicsPath.cs
- LineGeometry.cs
- CustomAssemblyResolver.cs
- ClientSettingsProvider.cs
- IncrementalHitTester.cs
- FixedSOMFixedBlock.cs
- MultipartContentParser.cs
- CodeBlockBuilder.cs
- OpenFileDialog.cs
- AssemblyCache.cs
- HttpCapabilitiesSectionHandler.cs
- KeyTime.cs
- MergeExecutor.cs
- thaishape.cs
- LogLogRecord.cs
- ProgressBar.cs
- PersistChildrenAttribute.cs
- QilExpression.cs
- ExpressionBuilder.cs
- MessageQueueInstaller.cs
- EdmItemCollection.cs
- Transform.cs
- DesignerDataColumn.cs
- ConfigurationErrorsException.cs
- SizeAnimation.cs
- ScriptModule.cs
- ToolboxItemAttribute.cs
- WebConvert.cs
- ISSmlParser.cs
- RoleGroupCollection.cs
- ImmComposition.cs
- AttributeQuery.cs
- EdmFunctions.cs
- TextRangeEditLists.cs
- CustomCredentialPolicy.cs
- ConfigurationValidatorAttribute.cs
- DefaultValueConverter.cs
- ChannelServices.cs
- ExtenderProviderService.cs
- Dictionary.cs
- SslStream.cs
- SecurityTokenException.cs
- LoginView.cs