Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / X509ClientCertificateAuthentication.cs / 1 / X509ClientCertificateAuthentication.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Security { using System.IdentityModel.Selectors; using System.ServiceModel; using System.Security.Cryptography.X509Certificates; public class X509ClientCertificateAuthentication { internal const X509CertificateValidationMode DefaultCertificateValidationMode = X509CertificateValidationMode.ChainTrust; internal const X509RevocationMode DefaultRevocationMode = X509RevocationMode.Online; internal const StoreLocation DefaultTrustedStoreLocation = StoreLocation.LocalMachine; internal const bool DefaultMapCertificateToWindowsAccount = false; static X509CertificateValidator defaultCertificateValidator; X509CertificateValidationMode certificateValidationMode = DefaultCertificateValidationMode; X509RevocationMode revocationMode = DefaultRevocationMode; StoreLocation trustedStoreLocation = DefaultTrustedStoreLocation; X509CertificateValidator customCertificateValidator = null; bool mapClientCertificateToWindowsAccount = DefaultMapCertificateToWindowsAccount; bool includeWindowsGroups = SspiSecurityTokenProvider.DefaultExtractWindowsGroupClaims; bool isReadOnly; internal X509ClientCertificateAuthentication() { } internal X509ClientCertificateAuthentication(X509ClientCertificateAuthentication other) { this.certificateValidationMode = other.certificateValidationMode; this.customCertificateValidator = other.customCertificateValidator; this.includeWindowsGroups = other.includeWindowsGroups; this.mapClientCertificateToWindowsAccount = other.mapClientCertificateToWindowsAccount; this.trustedStoreLocation = other.trustedStoreLocation; this.revocationMode = other.revocationMode; this.isReadOnly = other.isReadOnly; } internal static X509CertificateValidator DefaultCertificateValidator { get { if (defaultCertificateValidator == null) { bool useMachineContext = DefaultTrustedStoreLocation == StoreLocation.LocalMachine; X509ChainPolicy chainPolicy = new X509ChainPolicy(); chainPolicy.RevocationMode = DefaultRevocationMode; defaultCertificateValidator = X509CertificateValidator.CreateChainTrustValidator(useMachineContext, chainPolicy); } return defaultCertificateValidator; } } public X509CertificateValidationMode CertificateValidationMode { get { return this.certificateValidationMode; } set { X509CertificateValidationModeHelper.Validate(value); ThrowIfImmutable(); this.certificateValidationMode = value; } } public X509RevocationMode RevocationMode { get { return this.revocationMode; } set { ThrowIfImmutable(); this.revocationMode = value; } } public StoreLocation TrustedStoreLocation { get { return this.trustedStoreLocation; } set { ThrowIfImmutable(); this.trustedStoreLocation = value; } } public X509CertificateValidator CustomCertificateValidator { get { return this.customCertificateValidator; } set { ThrowIfImmutable(); this.customCertificateValidator = value; } } public bool MapClientCertificateToWindowsAccount { get { return this.mapClientCertificateToWindowsAccount; } set { ThrowIfImmutable(); this.mapClientCertificateToWindowsAccount = value; } } public bool IncludeWindowsGroups { get { return this.includeWindowsGroups; } set { ThrowIfImmutable(); this.includeWindowsGroups = value; } } internal X509CertificateValidator GetCertificateValidator() { if (this.certificateValidationMode == X509CertificateValidationMode.None) { return X509CertificateValidator.None; } else if (this.certificateValidationMode == X509CertificateValidationMode.PeerTrust) { return X509CertificateValidator.PeerTrust; } else if (this.certificateValidationMode == X509CertificateValidationMode.Custom) { if (this.customCertificateValidator == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.MissingCustomCertificateValidator))); } return this.customCertificateValidator; } else { bool useMachineContext = this.trustedStoreLocation == StoreLocation.LocalMachine; X509ChainPolicy chainPolicy = new X509ChainPolicy(); chainPolicy.RevocationMode = this.revocationMode; if (this.certificateValidationMode == X509CertificateValidationMode.ChainTrust) { return X509CertificateValidator.CreateChainTrustValidator(useMachineContext, chainPolicy); } else { return X509CertificateValidator.CreatePeerOrChainTrustValidator(useMachineContext, chainPolicy); } } } internal void MakeReadOnly() { this.isReadOnly = true; } void ThrowIfImmutable() { if (this.isReadOnly) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ObjectIsReadOnly))); } } } } // 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
- BitmapEffectCollection.cs
- BufferedStream.cs
- CompoundFileDeflateTransform.cs
- ProxySimple.cs
- FloaterParaClient.cs
- ProfileBuildProvider.cs
- SpeechRecognizer.cs
- AmbientLight.cs
- CellTreeNodeVisitors.cs
- ConfigXmlCDataSection.cs
- LocalValueEnumerator.cs
- RuleRefElement.cs
- BevelBitmapEffect.cs
- HotCommands.cs
- CombinedGeometry.cs
- EdmMember.cs
- KnownBoxes.cs
- UnsafeNativeMethodsCLR.cs
- TableStyle.cs
- WebHttpBinding.cs
- StyleHelper.cs
- EncoderReplacementFallback.cs
- SmiTypedGetterSetter.cs
- ValidationPropertyAttribute.cs
- TextEndOfParagraph.cs
- loginstatus.cs
- DataTableCollection.cs
- odbcmetadatacollectionnames.cs
- Point4DValueSerializer.cs
- RunClient.cs
- BinaryKeyIdentifierClause.cs
- XmlSerializerVersionAttribute.cs
- x509utils.cs
- SystemInformation.cs
- FontStyle.cs
- ConfigXmlReader.cs
- Page.cs
- TextControlDesigner.cs
- DbInsertCommandTree.cs
- GregorianCalendarHelper.cs
- SqlProfileProvider.cs
- DataSourceSelectArguments.cs
- OneToOneMappingSerializer.cs
- ZeroOpNode.cs
- ComponentEvent.cs
- ActivityInterfaces.cs
- WinFormsSpinner.cs
- UITypeEditors.cs
- MessageBox.cs
- MappingException.cs
- XmlTextReader.cs
- DbgUtil.cs
- DataGridItemEventArgs.cs
- DateTimeSerializationSection.cs
- SchemaTypeEmitter.cs
- SqlInternalConnectionTds.cs
- BounceEase.cs
- NodeLabelEditEvent.cs
- MetadataImporterQuotas.cs
- RuntimeVariableList.cs
- DataSourceCache.cs
- ComboBoxItem.cs
- TypeSystem.cs
- EditingCommands.cs
- UserControl.cs
- WorkflowInstanceExtensionManager.cs
- diagnosticsswitches.cs
- ResourcePool.cs
- Baml6Assembly.cs
- PartitionedStream.cs
- ValueTypeIndexerReference.cs
- WindowsTreeView.cs
- DefaultBinder.cs
- InvalidOperationException.cs
- LabelAutomationPeer.cs
- SiteMapHierarchicalDataSourceView.cs
- IODescriptionAttribute.cs
- StateMachine.cs
- SynchronousChannelMergeEnumerator.cs
- MDIWindowDialog.cs
- ReflectionUtil.cs
- MultiTouchSystemGestureLogic.cs
- TimerElapsedEvenArgs.cs
- PrintPreviewControl.cs
- DesignDataSource.cs
- MetadataPropertyAttribute.cs
- streamingZipPartStream.cs
- MimeBasePart.cs
- NumberAction.cs
- SerializationInfo.cs
- ClusterRegistryConfigurationProvider.cs
- DataErrorValidationRule.cs
- SerializationInfoEnumerator.cs
- SharedUtils.cs
- ValueConversionAttribute.cs
- DateTimeFormat.cs
- StrongNameUtility.cs
- FixedNode.cs
- SplashScreenNativeMethods.cs
- InboundActivityHelper.cs