Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / MessageSecurityOverMsmq.cs / 1 / MessageSecurityOverMsmq.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel
{
using System.Net.Security;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
using System.ServiceModel.Security.Tokens;
using System.Runtime.CompilerServices;
public sealed class MessageSecurityOverMsmq
{
internal const MessageCredentialType DefaultClientCredentialType = MessageCredentialType.Windows;
MessageCredentialType clientCredentialType;
SecurityAlgorithmSuite algorithmSuite;
bool wasAlgorithmSuiteSet;
internal MessageSecurityOverMsmq()
{
clientCredentialType = DefaultClientCredentialType;
algorithmSuite = SecurityAlgorithmSuite.Default;
}
public MessageCredentialType ClientCredentialType
{
get { return this.clientCredentialType; }
set
{
if (!MessageCredentialTypeHelper.IsDefined(value))
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value"));
}
this.clientCredentialType = value;
}
}
public SecurityAlgorithmSuite AlgorithmSuite
{
get { return this.algorithmSuite; }
set
{
if (value == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value");
}
this.algorithmSuite = value;
wasAlgorithmSuiteSet = true;
}
}
internal bool WasAlgorithmSuiteSet
{
get { return this.wasAlgorithmSuiteSet; }
}
[MethodImpl(MethodImplOptions.NoInlining)]
internal SecurityBindingElement CreateSecurityBindingElement()
{
SymmetricSecurityBindingElement result;
bool isKerberosSelected = false;
switch (this.clientCredentialType)
{
case MessageCredentialType.None:
result = SecurityBindingElement.CreateAnonymousForCertificateBindingElement();
break;
case MessageCredentialType.UserName:
result = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
break;
case MessageCredentialType.Certificate:
result = (SymmetricSecurityBindingElement)SecurityBindingElement.CreateMutualCertificateBindingElement();
break;
case MessageCredentialType.Windows:
result = SecurityBindingElement.CreateKerberosBindingElement();
isKerberosSelected = true;
break;
case MessageCredentialType.IssuedToken:
result = SecurityBindingElement.CreateIssuedTokenForCertificateBindingElement(IssuedSecurityTokenParameters.CreateInfoCardParameters(new SecurityStandardsManager(), this.algorithmSuite));
break;
default:
DiagnosticUtility.DebugAssert("unknown ClientCredentialType");
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
}
result.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11;
// set the algorithm suite and issued token params if required
if (wasAlgorithmSuiteSet || !isKerberosSelected)
{
result.DefaultAlgorithmSuite = this.AlgorithmSuite;
}
else if (isKerberosSelected)
{
result.DefaultAlgorithmSuite = SecurityAlgorithmSuite.KerberosDefault;
}
result.IncludeTimestamp = false;
result.LocalServiceSettings.DetectReplays = false;
result.LocalClientSettings.DetectReplays = false;
return result;
}
internal static bool TryCreate(SecurityBindingElement sbe, out MessageSecurityOverMsmq messageSecurity)
{
messageSecurity = null;
if (sbe == null)
return false;
SymmetricSecurityBindingElement ssbe = sbe as SymmetricSecurityBindingElement;
if (ssbe == null)
return false;
if (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
&& sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11)
{
return false;
}
// do not check local settings: sbe.LocalServiceSettings and sbe.LocalClientSettings
if (ssbe.IncludeTimestamp)
return false;
bool isKerberosSelected = false;
MessageCredentialType clientCredentialType;
IssuedSecurityTokenParameters issuedParameters;
if (SecurityBindingElement.IsAnonymousForCertificateBinding(sbe))
{
clientCredentialType = MessageCredentialType.None;
}
else if (SecurityBindingElement.IsUserNameForCertificateBinding(sbe))
{
clientCredentialType = MessageCredentialType.UserName;
}
else if (SecurityBindingElement.IsMutualCertificateBinding(sbe))
{
clientCredentialType = MessageCredentialType.Certificate;
}
else if (SecurityBindingElement.IsKerberosBinding(sbe))
{
clientCredentialType = MessageCredentialType.Windows;
isKerberosSelected = true;
}
else if (SecurityBindingElement.IsIssuedTokenForCertificateBinding(sbe, out issuedParameters))
{
if (!IssuedSecurityTokenParameters.IsInfoCardParameters(issuedParameters))
return false;
clientCredentialType = MessageCredentialType.IssuedToken;
}
else
{
return false;
}
messageSecurity = new MessageSecurityOverMsmq();
messageSecurity.ClientCredentialType = clientCredentialType;
// set the algorithm suite and issued token params if required
if (clientCredentialType != MessageCredentialType.IssuedToken && !isKerberosSelected)
{
messageSecurity.AlgorithmSuite = ssbe.DefaultAlgorithmSuite;
}
return true;
}
}
}
// 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
- EmptyElement.cs
- TemplateBindingExpressionConverter.cs
- CompilationSection.cs
- MetadataSource.cs
- ReaderOutput.cs
- CorrelationQueryBehavior.cs
- Polygon.cs
- CodeVariableDeclarationStatement.cs
- EntityCommandCompilationException.cs
- NativeMethods.cs
- ActivationServices.cs
- XpsResource.cs
- X509AsymmetricSecurityKey.cs
- RoleManagerEventArgs.cs
- _SpnDictionary.cs
- RenderDataDrawingContext.cs
- PDBReader.cs
- ModifierKeysValueSerializer.cs
- StyleHelper.cs
- InkCollectionBehavior.cs
- __FastResourceComparer.cs
- PointLight.cs
- OutputWindow.cs
- Root.cs
- LinkButton.cs
- AnalyzedTree.cs
- CachedCompositeFamily.cs
- DesignRelation.cs
- DbConnectionStringBuilder.cs
- MaskInputRejectedEventArgs.cs
- TypeSystem.cs
- XmlStreamStore.cs
- PublishLicense.cs
- RequestCacheManager.cs
- XmlSchemaGroupRef.cs
- Debug.cs
- DictionarySectionHandler.cs
- AppearanceEditorPart.cs
- DataGridViewButtonColumn.cs
- ProfileSection.cs
- Run.cs
- XmlFormatWriterGenerator.cs
- DeclarativeConditionsCollection.cs
- MimeMultiPart.cs
- TextServicesContext.cs
- UpdatePanelTriggerCollection.cs
- WebSysDefaultValueAttribute.cs
- DataGridColumnHeaderAutomationPeer.cs
- TextEditorSelection.cs
- SymDocumentType.cs
- ImageBrush.cs
- SamlAction.cs
- ObjectListItemCollection.cs
- SatelliteContractVersionAttribute.cs
- DesignerDataTableBase.cs
- ZipIOExtraFieldZip64Element.cs
- ToolboxService.cs
- UriTemplateVariablePathSegment.cs
- ToolStripComboBox.cs
- BitmapEffectGeneralTransform.cs
- CollectionBase.cs
- OleDbEnumerator.cs
- GeneralTransform2DTo3D.cs
- URI.cs
- Point.cs
- StructuredProperty.cs
- ToolBarButtonClickEvent.cs
- TableItemPatternIdentifiers.cs
- XmlTextAttribute.cs
- AsnEncodedData.cs
- DecimalConstantAttribute.cs
- XPathChildIterator.cs
- ResourceReferenceExpression.cs
- SafeNativeMethodsOther.cs
- Helper.cs
- BaseTreeIterator.cs
- HtmlTableRowCollection.cs
- XmlSchemaImport.cs
- StaticContext.cs
- SerializationException.cs
- DelegateHelpers.Generated.cs
- WizardStepBase.cs
- BindingOperations.cs
- EventLogPermission.cs
- SmiTypedGetterSetter.cs
- HijriCalendar.cs
- MgmtConfigurationRecord.cs
- SqlGenericUtil.cs
- MetadataCollection.cs
- XXXInfos.cs
- CompatibleIComparer.cs
- MimeImporter.cs
- CheckBox.cs
- AssemblyAttributesGoHere.cs
- PropertyDescriptorGridEntry.cs
- EpmSourcePathSegment.cs
- DataBoundControlHelper.cs
- ECDiffieHellmanCngPublicKey.cs
- DynamicArgumentDialog.cs
- Module.cs