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
- SystemGatewayIPAddressInformation.cs
- AsyncOperation.cs
- DataSvcMapFileSerializer.cs
- CompilerError.cs
- Nodes.cs
- DiagnosticStrings.cs
- ClockController.cs
- XpsFixedDocumentReaderWriter.cs
- ConfigurationElementCollection.cs
- WindowCollection.cs
- CodeGenerator.cs
- ToolStripDropDownClosingEventArgs.cs
- MutableAssemblyCacheEntry.cs
- SchemaCollectionCompiler.cs
- EdmSchemaError.cs
- ToolStripDropDownMenu.cs
- ScrollItemPattern.cs
- DockPatternIdentifiers.cs
- SolidBrush.cs
- DeclarativeCatalogPart.cs
- BinHexEncoder.cs
- ObjectHelper.cs
- ValidationUtility.cs
- Menu.cs
- ReferencedAssembly.cs
- SimpleApplicationHost.cs
- securitycriticaldataformultiplegetandset.cs
- CodeParameterDeclarationExpression.cs
- TransformationRules.cs
- MarkedHighlightComponent.cs
- AlgoModule.cs
- XhtmlBasicPanelAdapter.cs
- SynchronizationLockException.cs
- DataGridViewRowHeaderCell.cs
- DataRowExtensions.cs
- ImportContext.cs
- QuotedStringWriteStateInfo.cs
- DateTimeFormat.cs
- Int16AnimationUsingKeyFrames.cs
- GeometryConverter.cs
- RoleServiceManager.cs
- DateTimeConstantAttribute.cs
- IItemProperties.cs
- AnnotationAuthorChangedEventArgs.cs
- KeyValuePair.cs
- CodeBinaryOperatorExpression.cs
- KeyConstraint.cs
- HtmlLinkAdapter.cs
- Event.cs
- IconBitmapDecoder.cs
- TargetParameterCountException.cs
- DependencySource.cs
- IImplicitResourceProvider.cs
- FormViewInsertedEventArgs.cs
- LoginView.cs
- FirstQueryOperator.cs
- ControlPropertyNameConverter.cs
- Authorization.cs
- EventLogPermissionHolder.cs
- Rect3D.cs
- LocatorManager.cs
- CodeAttributeArgument.cs
- ModelChangedEventArgsImpl.cs
- NameScopePropertyAttribute.cs
- XmlTypeMapping.cs
- DoubleLinkListEnumerator.cs
- SocketSettings.cs
- TagPrefixAttribute.cs
- DropDownList.cs
- DNS.cs
- ExpressionHelper.cs
- UnsafeNativeMethods.cs
- OleDbReferenceCollection.cs
- ExpressionHelper.cs
- RoutedPropertyChangedEventArgs.cs
- SessionStateSection.cs
- RegexWorker.cs
- StringArrayConverter.cs
- ConsoleCancelEventArgs.cs
- ViewBase.cs
- QilInvokeEarlyBound.cs
- RC2.cs
- Matrix3D.cs
- LiteralControl.cs
- TextContainer.cs
- AlphaSortedEnumConverter.cs
- Regex.cs
- LinkedDataMemberFieldEditor.cs
- DesignerVerbCollection.cs
- DataGridViewCellStyleConverter.cs
- webbrowsersite.cs
- ErrorTableItemStyle.cs
- SelectionRangeConverter.cs
- XmlSchemaChoice.cs
- DataControlImageButton.cs
- Executor.cs
- ErrorHandlerFaultInfo.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- ObjectNotFoundException.cs
- DocumentGridPage.cs