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
- SrgsItemList.cs
- DataGridViewCellStyle.cs
- KeyboardEventArgs.cs
- CharacterBufferReference.cs
- ConvertBinder.cs
- SAPIEngineTypes.cs
- DrawListViewColumnHeaderEventArgs.cs
- InheritablePropertyChangeInfo.cs
- DSACryptoServiceProvider.cs
- EventSetter.cs
- HttpDictionary.cs
- TableProviderWrapper.cs
- CodeExporter.cs
- NGCPageContentCollectionSerializerAsync.cs
- Calendar.cs
- InProcStateClientManager.cs
- EnvelopedSignatureTransform.cs
- SQLByteStorage.cs
- EndpointNameMessageFilter.cs
- CompiledRegexRunner.cs
- BaseUriWithWildcard.cs
- WindowsListBox.cs
- IPGlobalProperties.cs
- PersonalizationProviderHelper.cs
- ToolStripLocationCancelEventArgs.cs
- SiteMapNodeCollection.cs
- ReservationNotFoundException.cs
- Object.cs
- TrimSurroundingWhitespaceAttribute.cs
- DebugView.cs
- XpsColorContext.cs
- EnumerableRowCollection.cs
- GenericsInstances.cs
- RowCache.cs
- SelectorItemAutomationPeer.cs
- ProtocolsConfigurationEntry.cs
- Style.cs
- SQLMoney.cs
- ServiceMetadataBehavior.cs
- RectangleGeometry.cs
- FileDialog.cs
- GCHandleCookieTable.cs
- LowerCaseStringConverter.cs
- CodeTypeDelegate.cs
- TreeViewItemAutomationPeer.cs
- _UriSyntax.cs
- ComboBoxRenderer.cs
- ClientRoleProvider.cs
- VisualTarget.cs
- FrameworkRichTextComposition.cs
- Item.cs
- ScopeElementCollection.cs
- Touch.cs
- ListViewHitTestInfo.cs
- SocketElement.cs
- BindableTemplateBuilder.cs
- SmiMetaDataProperty.cs
- CustomPopupPlacement.cs
- OleDbStruct.cs
- coordinatorscratchpad.cs
- TraceSource.cs
- DetailsViewInsertEventArgs.cs
- Certificate.cs
- RemoteCryptoRsaServiceProvider.cs
- StringFormat.cs
- mediaclock.cs
- HttpContextServiceHost.cs
- UInt32Storage.cs
- ConfigXmlComment.cs
- BitVector32.cs
- LightweightEntityWrapper.cs
- JsonObjectDataContract.cs
- SapiRecognizer.cs
- HandleValueEditor.cs
- MimeBasePart.cs
- DispatcherExceptionFilterEventArgs.cs
- CompilationRelaxations.cs
- DependentList.cs
- TextElementAutomationPeer.cs
- EventDescriptor.cs
- PreservationFileReader.cs
- ThemeableAttribute.cs
- SvcMapFileSerializer.cs
- coordinatorfactory.cs
- PropertyIdentifier.cs
- ExpandedProjectionNode.cs
- SqlCaseSimplifier.cs
- NamespaceDecl.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- DataServiceOperationContext.cs
- LayoutManager.cs
- Semaphore.cs
- TextElement.cs
- TCEAdapterGenerator.cs
- ResourcePermissionBase.cs
- WindowsAltTab.cs
- OrderedDictionary.cs
- XmlImplementation.cs
- ellipse.cs
- TableLayoutStyleCollection.cs