Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / WSSecurityXXX2005.cs / 1 / WSSecurityXXX2005.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Security
{
using System;
using System.ServiceModel;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Text;
using System.Threading;
using System.Xml;
using System.IdentityModel.Claims;
using System.IdentityModel.Policy;
using System.IdentityModel.Tokens;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel.Security.Tokens;
using HexBinary = System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
using System.Runtime.Serialization;
using KeyIdentifierEntry = WSSecurityTokenSerializer.KeyIdentifierEntry;
using KeyIdentifierClauseEntry = WSSecurityTokenSerializer.KeyIdentifierClauseEntry;
using TokenEntry = WSSecurityTokenSerializer.TokenEntry;
using StrEntry = WSSecurityTokenSerializer.StrEntry;
class WSSecurityXXX2005 : WSSecurityJan2004
{
public WSSecurityXXX2005(WSSecurityTokenSerializer tokenSerializer, SamlSerializer samlSerializer)
: base(tokenSerializer, samlSerializer)
{
}
public override void PopulateStrEntries(IList strEntries)
{
PopulateJan2004StrEntries(strEntries);
strEntries.Add(new SamlXXX2005KeyIdentifierStrEntry());
strEntries.Add(new SamlDirectStrEntry());
strEntries.Add(new X509ThumbprintStrEntry(this.WSSecurityTokenSerializer));
strEntries.Add(new EncryptedKeyHashStrEntry(this.WSSecurityTokenSerializer));
}
public override void PopulateTokenEntries(IList tokenEntryList)
{
PopulateJan2004TokenEntries(tokenEntryList);
tokenEntryList.Add(new WSSecurityXXX2005.WrappedKeyTokenEntry(this.WSSecurityTokenSerializer));
tokenEntryList.Add(new WSSecurityXXX2005.SamlTokenEntry(this.WSSecurityTokenSerializer, this.SamlSerializer));
}
public override void PopulateKeyIdentifierClauseEntries(IList clauseEntries)
{
List strEntries = new List();
this.WSSecurityTokenSerializer.PopulateStrEntries(strEntries);
SecurityTokenReferenceXXX2005ClauseEntry strClause = new SecurityTokenReferenceXXX2005ClauseEntry(this.WSSecurityTokenSerializer, strEntries);
clauseEntries.Add(strClause);
}
new class SamlTokenEntry : WSSecurityJan2004.SamlTokenEntry
{
public SamlTokenEntry(WSSecurityTokenSerializer tokenSerializer, SamlSerializer samlSerializer)
: base(tokenSerializer, samlSerializer)
{
}
public override string TokenTypeUri { get { return SecurityXXX2005Strings.SamlTokenType; } }
}
new class WrappedKeyTokenEntry : WSSecurityJan2004.WrappedKeyTokenEntry
{
public WrappedKeyTokenEntry(WSSecurityTokenSerializer tokenSerializer)
: base(tokenSerializer)
{
}
public override string TokenTypeUri { get { return SecurityXXX2005Strings.EncryptedKeyTokenType; } }
}
class SecurityTokenReferenceXXX2005ClauseEntry : SecurityTokenReferenceJan2004ClauseEntry
{
public SecurityTokenReferenceXXX2005ClauseEntry(WSSecurityTokenSerializer tokenSerializer, IList strEntries)
: base(tokenSerializer, strEntries)
{
}
protected override string ReadTokenType(XmlDictionaryReader reader)
{
return reader.GetAttribute(XD.SecurityXXX2005Dictionary.TokenTypeAttribute, XD.SecurityXXX2005Dictionary.Namespace);
}
}
class EncryptedKeyHashStrEntry : WSSecurityJan2004.KeyIdentifierStrEntry
{
protected override Type ClauseType { get { return typeof(EncryptedKeyHashIdentifierClause); } }
public override Type TokenType { get { return typeof(WrappedKeySecurityToken); } }
protected override string ValueTypeUri { get { return SecurityXXX2005Strings.EncryptedKeyHashValueType; } }
public EncryptedKeyHashStrEntry(WSSecurityTokenSerializer tokenSerializer)
: base(tokenSerializer)
{
}
public override bool CanReadClause(XmlDictionaryReader reader, string tokenType)
{
// Backward compatible with V1. Accept if missing.
if (tokenType != null && tokenType != SecurityXXX2005Strings.EncryptedKeyTokenType)
{
return false;
}
return base.CanReadClause(reader, tokenType);
}
protected override SecurityKeyIdentifierClause CreateClause(byte[] bytes, byte[] derivationNonce, int derivationLength)
{
return new EncryptedKeyHashIdentifierClause(bytes, true, derivationNonce, derivationLength);
}
// WS-Security 1.1's EncryptedKey external ref requires wsse11:TokenType
public override void WriteContent(XmlDictionaryWriter writer, SecurityKeyIdentifierClause clause)
{
writer.WriteAttributeString(XD.SecurityXXX2005Dictionary.Prefix.Value, XD.SecurityXXX2005Dictionary.TokenTypeAttribute, XD.SecurityXXX2005Dictionary.Namespace, SecurityXXX2005Strings.EncryptedKeyTokenType);
base.WriteContent(writer, clause);
}
}
class X509ThumbprintStrEntry : WSSecurityJan2004.KeyIdentifierStrEntry
{
protected override Type ClauseType { get { return typeof(X509ThumbprintKeyIdentifierClause); } }
public override Type TokenType { get { return typeof(X509SecurityToken); } }
protected override string ValueTypeUri { get { return SecurityXXX2005Strings.ThumbprintSha1ValueType; } }
public X509ThumbprintStrEntry(WSSecurityTokenSerializer tokenSerializer)
: base(tokenSerializer)
{
}
protected override SecurityKeyIdentifierClause CreateClause(byte[] bytes, byte[] derivationNonce, int derivationLength)
{
return new X509ThumbprintKeyIdentifierClause(bytes);
}
}
class SamlXXX2005KeyIdentifierStrEntry : SamlJan2004KeyIdentifierStrEntry
{
protected override bool IsMatchingValueType(string valueType)
{
return (base.IsMatchingValueType(valueType) || valueType == XD.SecurityXXX2005Dictionary.Saml11AssertionValueType.Value);
}
public override void WriteContent(XmlDictionaryWriter writer, SecurityKeyIdentifierClause clause)
{
SamlAssertionKeyIdentifierClause samlClause = (SamlAssertionKeyIdentifierClause) clause;
// write the token type as part of the STR
if (samlClause.TokenTypeUri != null)
{
writer.WriteAttributeString(XD.SecurityXXX2005Dictionary.Prefix.Value, XD.SecurityXXX2005Dictionary.TokenTypeAttribute, XD.SecurityXXX2005Dictionary.Namespace, samlClause.TokenTypeUri);
}
base.WriteContent(writer, clause);
}
}
class SamlDirectStrEntry : StrEntry
{
public override bool CanReadClause(XmlDictionaryReader reader, string tokenType)
{
if (tokenType != XD.SecurityXXX2005Dictionary.Saml20TokenType.Value)
{
return false;
}
return (reader.IsStartElement(XD.SecurityJan2004Dictionary.Reference, XD.SecurityJan2004Dictionary.Namespace));
}
public override Type GetTokenType(SecurityKeyIdentifierClause clause)
{
return null;
}
public override SecurityKeyIdentifierClause ReadClause(XmlDictionaryReader reader, byte[] derivationNone, int derivationLength, string tokenType)
{
string samlUri = reader.GetAttribute(XD.SecurityJan2004Dictionary.URI, null);
if (reader.IsEmptyElement)
{
reader.Read();
}
else
{
reader.ReadStartElement();
reader.ReadEndElement();
}
return new SamlAssertionDirectKeyIdentifierClause(samlUri, derivationNone, derivationLength);
}
public override bool SupportsCore(SecurityKeyIdentifierClause clause)
{
return typeof(SamlAssertionDirectKeyIdentifierClause).IsAssignableFrom(clause.GetType());
}
public override void WriteContent(XmlDictionaryWriter writer, SecurityKeyIdentifierClause clause)
{
writer.WriteAttributeString(XD.SecurityXXX2005Dictionary.Prefix.Value, XD.SecurityXXX2005Dictionary.TokenTypeAttribute, XD.SecurityXXX2005Dictionary.Namespace, XD.SecurityXXX2005Dictionary.Saml20TokenType.Value);
SamlAssertionDirectKeyIdentifierClause samlClause = clause as SamlAssertionDirectKeyIdentifierClause;
writer.WriteStartElement(XD.SecurityJan2004Dictionary.Prefix.Value, XD.SecurityJan2004Dictionary.Reference, XD.SecurityJan2004Dictionary.Namespace);
writer.WriteAttributeString(XD.SecurityJan2004Dictionary.URI, null, samlClause.SamlUri);
writer.WriteEndElement();
}
}
}
}
// 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
- LiteralLink.cs
- LinqDataSourceUpdateEventArgs.cs
- FrameworkTemplate.cs
- PictureBox.cs
- DynamicPropertyHolder.cs
- DivideByZeroException.cs
- WindowsGraphicsWrapper.cs
- InvalidProgramException.cs
- VersionedStream.cs
- AssemblyAttributesGoHere.cs
- TypedReference.cs
- Fx.cs
- XmlSchemaRedefine.cs
- DataObjectCopyingEventArgs.cs
- ConversionContext.cs
- FilteredAttributeCollection.cs
- TriState.cs
- ISFClipboardData.cs
- SchemaImporterExtensionElementCollection.cs
- UmAlQuraCalendar.cs
- LocatorManager.cs
- KnownBoxes.cs
- querybuilder.cs
- AssemblySettingAttributes.cs
- UnsafeNativeMethods.cs
- WmlLabelAdapter.cs
- ModelServiceImpl.cs
- AttachedPropertyBrowsableAttribute.cs
- SoapIncludeAttribute.cs
- SqlPersonalizationProvider.cs
- XXXInfos.cs
- ScrollEvent.cs
- AsynchronousChannel.cs
- InputScopeConverter.cs
- QueryGenerator.cs
- DrawingCollection.cs
- COMException.cs
- nulltextcontainer.cs
- ValidationEventArgs.cs
- AddInStore.cs
- ComNativeDescriptor.cs
- EventProperty.cs
- ConditionedDesigner.cs
- HttpCacheVary.cs
- InstanceOwnerQueryResult.cs
- ProcessModule.cs
- RunWorkerCompletedEventArgs.cs
- FormatterConverter.cs
- OneOfElement.cs
- ItemChangedEventArgs.cs
- ParentQuery.cs
- StretchValidation.cs
- DataTemplateSelector.cs
- Semaphore.cs
- _DomainName.cs
- CodeEventReferenceExpression.cs
- OrthographicCamera.cs
- ShaderRenderModeValidation.cs
- Enlistment.cs
- EntityProxyFactory.cs
- PerspectiveCamera.cs
- QueryExtender.cs
- SmiEventSink.cs
- SamlDelegatingWriter.cs
- JsonGlobals.cs
- SecurityUniqueId.cs
- RbTree.cs
- columnmapfactory.cs
- ResourceWriter.cs
- DataGridViewHitTestInfo.cs
- Selection.cs
- PriorityQueue.cs
- MultiView.cs
- ElementHost.cs
- BamlStream.cs
- exports.cs
- Exception.cs
- PageStatePersister.cs
- _TLSstream.cs
- NavigateEvent.cs
- LoginUtil.cs
- ProxyWebPartManager.cs
- StreamGeometry.cs
- ComplexObject.cs
- ClientSettingsStore.cs
- Block.cs
- XmlSchemaChoice.cs
- PropertyPathWorker.cs
- WebUtil.cs
- GuidTagList.cs
- VolatileEnlistmentMultiplexing.cs
- SchemaHelper.cs
- WebPartMenu.cs
- ErrorTableItemStyle.cs
- OdbcParameter.cs
- AvTrace.cs
- TemplatedWizardStep.cs
- XmlDataContract.cs
- ISAPIRuntime.cs
- HitTestParameters3D.cs