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
- TextSelectionHighlightLayer.cs
- HandlerMappingMemo.cs
- SingleAnimationUsingKeyFrames.cs
- PropertyInfoSet.cs
- followingsibling.cs
- DropTarget.cs
- LineSegment.cs
- ConversionContext.cs
- RepeatBehavior.cs
- CodeNamespaceImportCollection.cs
- COM2IPerPropertyBrowsingHandler.cs
- ExternalException.cs
- AttributeCollection.cs
- SessionStateUtil.cs
- TransactionManager.cs
- NameScopePropertyAttribute.cs
- DataGridViewCellEventArgs.cs
- FrameworkTemplate.cs
- RepeaterCommandEventArgs.cs
- Effect.cs
- FontWeightConverter.cs
- CommonGetThemePartSize.cs
- DataGridViewColumnConverter.cs
- FamilyMap.cs
- DefaultHttpHandler.cs
- NavigatingCancelEventArgs.cs
- DefaultParameterValueAttribute.cs
- DataSourceProvider.cs
- CreateUserWizardStep.cs
- SymbolPair.cs
- FixedSOMLineRanges.cs
- ChannelSinkStacks.cs
- SchemaTableColumn.cs
- RoleService.cs
- TraceContextEventArgs.cs
- DateTimeParse.cs
- TrackingProvider.cs
- ExpressionBuilderCollection.cs
- SafePEFileHandle.cs
- SerializerWriterEventHandlers.cs
- BoundColumn.cs
- URLIdentityPermission.cs
- CodeChecksumPragma.cs
- XmlQueryTypeFactory.cs
- IsolatedStorageFilePermission.cs
- DataServices.cs
- BindValidator.cs
- DrawingGroupDrawingContext.cs
- XsltSettings.cs
- SR.cs
- XmlText.cs
- ProfileProvider.cs
- RootNamespaceAttribute.cs
- SelectionHighlightInfo.cs
- ApplicationActivator.cs
- WebService.cs
- LinqDataSourceContextEventArgs.cs
- StructuredTypeEmitter.cs
- DictionaryChange.cs
- EntityDataSourceView.cs
- SignedXml.cs
- EventLogInformation.cs
- IndexOutOfRangeException.cs
- WebPartVerbsEventArgs.cs
- WorkflowApplicationUnhandledExceptionEventArgs.cs
- AdditionalEntityFunctions.cs
- WebPartConnectionsConnectVerb.cs
- FixedSOMContainer.cs
- UrlAuthorizationModule.cs
- TableCellAutomationPeer.cs
- XmlSchemaAll.cs
- XmlComplianceUtil.cs
- RootBuilder.cs
- ParameterSubsegment.cs
- METAHEADER.cs
- ConfigurationSectionCollection.cs
- VariableAction.cs
- SecurityPolicySection.cs
- RegexTree.cs
- XmlDictionaryReaderQuotas.cs
- TimeZone.cs
- AVElementHelper.cs
- MultiView.cs
- OdbcStatementHandle.cs
- Table.cs
- Adorner.cs
- ParameterElementCollection.cs
- ScrollData.cs
- SpeakProgressEventArgs.cs
- MorphHelpers.cs
- ApplicationInfo.cs
- SynchronizationLockException.cs
- CurrentChangedEventManager.cs
- ServiceMemoryGates.cs
- ResizeGrip.cs
- CodeMemberField.cs
- DbProviderFactoriesConfigurationHandler.cs
- DefaultEventAttribute.cs
- TextWriterTraceListener.cs
- DirectionalLight.cs