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
- ScriptDescriptor.cs
- Expr.cs
- FlowDocumentPage.cs
- PerformanceCounterCategory.cs
- TargetControlTypeCache.cs
- SimpleApplicationHost.cs
- HandlerWithFactory.cs
- TemplateBindingExtensionConverter.cs
- BuildProvider.cs
- VersionUtil.cs
- DecimalConverter.cs
- PartialCachingControl.cs
- HandlerBase.cs
- DbMetaDataCollectionNames.cs
- RouteCollection.cs
- SimpleMailWebEventProvider.cs
- IdentityValidationException.cs
- KnownTypesProvider.cs
- CustomAttribute.cs
- UnsafeNativeMethods.cs
- Serialization.cs
- DataStreamFromComStream.cs
- WorkflowCommandExtensionItem.cs
- XmlQuerySequence.cs
- GetLastErrorDetailsRequest.cs
- BufferedMessageData.cs
- ResourceType.cs
- WebCategoryAttribute.cs
- PeerInputChannel.cs
- PermissionRequestEvidence.cs
- AggregatePushdown.cs
- Exception.cs
- MetadataProperty.cs
- ReflectPropertyDescriptor.cs
- SimpleType.cs
- GenericAuthenticationEventArgs.cs
- UnknownBitmapEncoder.cs
- LinqDataSourceSelectEventArgs.cs
- ProfileManager.cs
- DllNotFoundException.cs
- XamlRtfConverter.cs
- EventDrivenDesigner.cs
- MaterialCollection.cs
- RequestedSignatureDialog.cs
- InstanceDescriptor.cs
- TemplateEditingVerb.cs
- EntityClientCacheEntry.cs
- SharedPerformanceCounter.cs
- ListViewCancelEventArgs.cs
- ItemChangedEventArgs.cs
- SetState.cs
- ArglessEventHandlerProxy.cs
- ObfuscationAttribute.cs
- SettingsBase.cs
- CachedPathData.cs
- HMACSHA512.cs
- ProviderConnectionPoint.cs
- WinFormsSpinner.cs
- DeviceContext.cs
- Highlights.cs
- StdRegProviderWrapper.cs
- DataListItem.cs
- MimeObjectFactory.cs
- FixedSOMTableRow.cs
- DataRecordObjectView.cs
- DateTimeStorage.cs
- BuildProviderCollection.cs
- PropertyIdentifier.cs
- Part.cs
- PageStatePersister.cs
- TreeNodeBindingCollection.cs
- MarshalByValueComponent.cs
- Margins.cs
- ThreadSafeList.cs
- FixedTextPointer.cs
- DocumentXmlWriter.cs
- ProbeRequestResponseAsyncResult.cs
- BitmapEffectInputConnector.cs
- NameValuePair.cs
- _ConnectStream.cs
- PropertyGroupDescription.cs
- RegexMatchCollection.cs
- ContainsRowNumberChecker.cs
- DBConnectionString.cs
- ObjectPersistData.cs
- SEHException.cs
- BigInt.cs
- EditCommandColumn.cs
- Brush.cs
- Rules.cs
- TextEditorLists.cs
- ExceptionHelpers.cs
- XmlWriter.cs
- InstanceCreationEditor.cs
- WindowsProgressbar.cs
- ParameterReplacerVisitor.cs
- Enum.cs
- ProcessProtocolHandler.cs
- LinkButton.cs
- HwndHost.cs