Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / HttpTransportSecurity.cs / 1 / HttpTransportSecurity.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel
{
using System;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
using System.Net;
using System.Net.Security;
public sealed class HttpTransportSecurity
{
internal const HttpClientCredentialType DefaultClientCredentialType = HttpClientCredentialType.None;
internal const HttpProxyCredentialType DefaultProxyCredentialType = HttpProxyCredentialType.None;
internal const string DefaultRealm = System.ServiceModel.Channels.HttpTransportDefaults.Realm;
HttpClientCredentialType clientCredentialType;
HttpProxyCredentialType proxyCredentialType;
string realm;
internal HttpTransportSecurity()
{
this.clientCredentialType = DefaultClientCredentialType;
this.proxyCredentialType = DefaultProxyCredentialType;
this.realm = DefaultRealm;
}
public HttpClientCredentialType ClientCredentialType
{
get { return this.clientCredentialType; }
set
{
if (!HttpClientCredentialTypeHelper.IsDefined(value))
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value"));
}
this.clientCredentialType = value;
}
}
public HttpProxyCredentialType ProxyCredentialType
{
get { return this.proxyCredentialType; }
set
{
if (!HttpProxyCredentialTypeHelper.IsDefined(value))
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value"));
}
this.proxyCredentialType = value;
}
}
public string Realm
{
get { return this.realm; }
set { this.realm = value; }
}
internal void ConfigureTransportProtectionOnly(HttpsTransportBindingElement https)
{
DisableAuthentication(https);
https.RequireClientCertificate = false;
}
void ConfigureAuthentication(HttpTransportBindingElement http)
{
http.AuthenticationScheme = HttpClientCredentialTypeHelper.MapToAuthenticationScheme(this.clientCredentialType);
http.ProxyAuthenticationScheme = HttpProxyCredentialTypeHelper.MapToAuthenticationScheme(this.proxyCredentialType);
http.Realm = this.Realm;
}
static void ConfigureAuthentication(HttpTransportBindingElement http, HttpTransportSecurity transportSecurity)
{
transportSecurity.clientCredentialType = HttpClientCredentialTypeHelper.MapToClientCredentialType(http.AuthenticationScheme);
transportSecurity.proxyCredentialType = HttpProxyCredentialTypeHelper.MapToProxyCredentialType(http.ProxyAuthenticationScheme);
transportSecurity.Realm = http.Realm;
}
void DisableAuthentication(HttpTransportBindingElement http)
{
http.AuthenticationScheme = AuthenticationSchemes.Anonymous;
http.ProxyAuthenticationScheme = AuthenticationSchemes.Anonymous;
http.Realm = DefaultRealm;
}
static bool IsDisabledAuthentication(HttpTransportBindingElement http)
{
return http.AuthenticationScheme == AuthenticationSchemes.Anonymous && http.ProxyAuthenticationScheme == AuthenticationSchemes.Anonymous && http.Realm == DefaultRealm;
}
internal void ConfigureTransportProtectionAndAuthentication(HttpsTransportBindingElement https)
{
ConfigureAuthentication(https);
https.RequireClientCertificate = (this.clientCredentialType == HttpClientCredentialType.Certificate);
}
internal static void ConfigureTransportProtectionAndAuthentication(HttpsTransportBindingElement https, HttpTransportSecurity transportSecurity)
{
ConfigureAuthentication(https, transportSecurity);
if (https.RequireClientCertificate)
transportSecurity.ClientCredentialType = HttpClientCredentialType.Certificate;
}
internal void ConfigureTransportAuthentication(HttpTransportBindingElement http)
{
if (this.clientCredentialType == HttpClientCredentialType.Certificate)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.CertificateUnsupportedForHttpTransportCredentialOnly)));
}
ConfigureAuthentication(http);
}
internal static bool IsConfiguredTransportAuthentication(HttpTransportBindingElement http, HttpTransportSecurity transportSecurity)
{
if (HttpClientCredentialTypeHelper.MapToClientCredentialType(http.AuthenticationScheme) == HttpClientCredentialType.Certificate)
return false;
ConfigureAuthentication(http, transportSecurity);
return true;
}
internal void DisableTransportAuthentication(HttpTransportBindingElement http)
{
DisableAuthentication(http);
}
internal static bool IsDisabledTransportAuthentication(HttpTransportBindingElement http)
{
return IsDisabledAuthentication(http);
}
}
}
// 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
- ColorTranslator.cs
- CqlParserHelpers.cs
- HeaderedItemsControl.cs
- DataGridColumnCollection.cs
- WinFormsSecurity.cs
- Span.cs
- ConfigurationValue.cs
- ClientSponsor.cs
- BaseValidatorDesigner.cs
- ArraySortHelper.cs
- XmlEnumAttribute.cs
- LogExtentCollection.cs
- WindowsNonControl.cs
- XmlCharType.cs
- FormViewDeleteEventArgs.cs
- TimeZone.cs
- FixedSOMPageConstructor.cs
- ObjectListDesigner.cs
- PathFigure.cs
- ValidatorUtils.cs
- GlyphsSerializer.cs
- KeysConverter.cs
- DynamicUpdateCommand.cs
- ContentPlaceHolder.cs
- SchemaType.cs
- MultipleCopiesCollection.cs
- selecteditemcollection.cs
- MemberPathMap.cs
- XmlSchemaAll.cs
- MetadataExchangeClient.cs
- PersonalizationEntry.cs
- ILGen.cs
- RegisteredScript.cs
- _DomainName.cs
- XmlUtil.cs
- StoreItemCollection.Loader.cs
- ArgumentElement.cs
- KnownTypes.cs
- InstanceStore.cs
- Accessible.cs
- SingleResultAttribute.cs
- WaitHandle.cs
- EdmFunctionAttribute.cs
- QuestionEventArgs.cs
- SQLMembershipProvider.cs
- HtmlMeta.cs
- RegexBoyerMoore.cs
- OverflowException.cs
- CodeLabeledStatement.cs
- OutOfMemoryException.cs
- _Events.cs
- Clipboard.cs
- FactoryId.cs
- IPAddressCollection.cs
- ObjectDataSourceEventArgs.cs
- DrawToolTipEventArgs.cs
- DoubleLinkListEnumerator.cs
- DefaultCommandExtensionCallback.cs
- Binding.cs
- RijndaelManagedTransform.cs
- StorageScalarPropertyMapping.cs
- PersonalizationStateQuery.cs
- MimeBasePart.cs
- OleDbReferenceCollection.cs
- RuleDefinitions.cs
- ThousandthOfEmRealDoubles.cs
- XmlDataSource.cs
- printdlgexmarshaler.cs
- WorkflowFileItem.cs
- FontCacheUtil.cs
- SectionVisual.cs
- DirectoryInfo.cs
- Size.cs
- ChannelToken.cs
- SafeCryptoHandles.cs
- MenuRendererStandards.cs
- EFAssociationProvider.cs
- Rotation3DAnimation.cs
- RegularExpressionValidator.cs
- NewExpression.cs
- ColorAnimationUsingKeyFrames.cs
- SrgsSemanticInterpretationTag.cs
- SafeRegistryHandle.cs
- MobileFormsAuthentication.cs
- TypeNameConverter.cs
- XmlAutoDetectWriter.cs
- ExtendedTransformFactory.cs
- SchemaElementLookUpTable.cs
- RelationshipManager.cs
- FtpCachePolicyElement.cs
- ZipPackage.cs
- BitmapSizeOptions.cs
- WmfPlaceableFileHeader.cs
- ProviderCommandInfoUtils.cs
- AccessorTable.cs
- ConvertersCollection.cs
- SchemaCollectionCompiler.cs
- BindingOperations.cs
- MinimizableAttributeTypeConverter.cs
- WebBrowser.cs