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
- ConfigXmlElement.cs
- NetworkAddressChange.cs
- MultipartContentParser.cs
- OverflowException.cs
- EntityDataSourceEntitySetNameItem.cs
- NullRuntimeConfig.cs
- AutomationElement.cs
- BindingWorker.cs
- ModifyActivitiesPropertyDescriptor.cs
- FieldDescriptor.cs
- WebExceptionStatus.cs
- Clock.cs
- OracleBoolean.cs
- SessionState.cs
- ResourceManager.cs
- RuntimeArgumentHandle.cs
- CustomTrackingQuery.cs
- DataGridViewTextBoxColumn.cs
- Utils.cs
- AsyncResult.cs
- ContainerFilterService.cs
- XhtmlBasicCalendarAdapter.cs
- WinFormsComponentEditor.cs
- ConnectionConsumerAttribute.cs
- XslTransform.cs
- DataObjectFieldAttribute.cs
- AutomationEvent.cs
- SystemIcons.cs
- ClientEventManager.cs
- Hex.cs
- TypeValidationEventArgs.cs
- SafeArrayRankMismatchException.cs
- XPathEmptyIterator.cs
- TokenBasedSet.cs
- ExpandSegment.cs
- SrgsToken.cs
- HttpCacheParams.cs
- XMLUtil.cs
- FormViewDesigner.cs
- ResXDataNode.cs
- PageHandlerFactory.cs
- Vector3DConverter.cs
- ConfigurationErrorsException.cs
- SwitchAttribute.cs
- PcmConverter.cs
- StackSpiller.Bindings.cs
- NavigationPropertyEmitter.cs
- EntityCommandDefinition.cs
- EdgeProfileValidation.cs
- DataGridToolTip.cs
- Visitor.cs
- lengthconverter.cs
- HelpInfo.cs
- ListMarkerSourceInfo.cs
- EnvelopedPkcs7.cs
- StyleBamlRecordReader.cs
- WindowsGraphics2.cs
- NonVisualControlAttribute.cs
- DataRowChangeEvent.cs
- OrderedDictionary.cs
- Clipboard.cs
- RefreshPropertiesAttribute.cs
- DropShadowBitmapEffect.cs
- ItemPager.cs
- TransformCollection.cs
- NavigationCommands.cs
- UIElementIsland.cs
- PropertyBuilder.cs
- HtmlInputImage.cs
- AttributeData.cs
- SiteMapSection.cs
- HitTestWithGeometryDrawingContextWalker.cs
- StreamUpgradeBindingElement.cs
- SQLInt16Storage.cs
- Storyboard.cs
- SocketPermission.cs
- MessageQueue.cs
- SamlAuthorityBinding.cs
- StrongName.cs
- HuffModule.cs
- StrongNamePublicKeyBlob.cs
- SafeFileMappingHandle.cs
- ISCIIEncoding.cs
- WebContext.cs
- HttpSocketManager.cs
- SearchForVirtualItemEventArgs.cs
- HttpResponseInternalWrapper.cs
- ExpressionBuilder.cs
- WebPartConnectionsCancelVerb.cs
- XmlSchemaRedefine.cs
- RadioButtonList.cs
- TableCellCollection.cs
- DispatcherExceptionFilterEventArgs.cs
- SmiContextFactory.cs
- ExpanderAutomationPeer.cs
- DataServiceRequestOfT.cs
- CellIdBoolean.cs
- XhtmlConformanceSection.cs
- GridSplitterAutomationPeer.cs
- MetadataException.cs