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(IListstrEntries) { 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
- ClientUrlResolverWrapper.cs
- IChannel.cs
- BitmapData.cs
- XmlHierarchicalEnumerable.cs
- DataGridCellInfo.cs
- QilTernary.cs
- DependencyPropertyValueSerializer.cs
- TypeNameConverter.cs
- Bidi.cs
- Rule.cs
- Tablet.cs
- WindowsFormsSynchronizationContext.cs
- CompilerGeneratedAttribute.cs
- BrowserCapabilitiesCompiler.cs
- AnalyzedTree.cs
- _SingleItemRequestCache.cs
- SqlCacheDependencyDatabase.cs
- ReflectionHelper.cs
- StoreContentChangedEventArgs.cs
- TaskFormBase.cs
- XamlTemplateSerializer.cs
- PartitionedStream.cs
- ParserHooks.cs
- SelectorItemAutomationPeer.cs
- MatrixUtil.cs
- WebResponse.cs
- XmlWrappingReader.cs
- DetailsViewDeletedEventArgs.cs
- TranslateTransform.cs
- RegionInfo.cs
- SelectionProviderWrapper.cs
- NetTcpSecurityElement.cs
- RangeBase.cs
- SqlGenericUtil.cs
- SupportsEventValidationAttribute.cs
- RenderDataDrawingContext.cs
- KnownColorTable.cs
- WindowsStatusBar.cs
- ViewStateModeByIdAttribute.cs
- WindowsListViewItemCheckBox.cs
- SqlServer2KCompatibilityCheck.cs
- InheritedPropertyChangedEventArgs.cs
- XmlSchema.cs
- HttpSysSettings.cs
- Rect3DValueSerializer.cs
- ConfigurationConverterBase.cs
- ManagedFilter.cs
- TreeViewDesigner.cs
- Matrix.cs
- CDSCollectionETWBCLProvider.cs
- CompositeFontInfo.cs
- XmlLangPropertyAttribute.cs
- LinkedResource.cs
- Int32Converter.cs
- BamlStream.cs
- ACE.cs
- SynchronizedMessageSource.cs
- AcceleratedTokenProviderState.cs
- ColumnResizeAdorner.cs
- SQLDateTime.cs
- AnnotationService.cs
- CommandManager.cs
- MultiSelector.cs
- VectorConverter.cs
- _ListenerRequestStream.cs
- DesignTimeTemplateParser.cs
- AttributeEmitter.cs
- XmlArrayItemAttribute.cs
- FileBasedResourceGroveler.cs
- PropertiesTab.cs
- File.cs
- RoleService.cs
- CollectionChangeEventArgs.cs
- Profiler.cs
- UserControl.cs
- ConfigurationManager.cs
- CompilerError.cs
- DataTableNewRowEvent.cs
- UIAgentAsyncParams.cs
- FormatterServices.cs
- Constants.cs
- LocalizedNameDescriptionPair.cs
- MimeTypeAttribute.cs
- TextEncodedRawTextWriter.cs
- SQLMoney.cs
- IndentTextWriter.cs
- DataGridTable.cs
- XNodeValidator.cs
- HttpHandler.cs
- TogglePatternIdentifiers.cs
- LinqDataSourceStatusEventArgs.cs
- InkPresenter.cs
- XPathNodeInfoAtom.cs
- GridViewColumnCollectionChangedEventArgs.cs
- XamlClipboardData.cs
- CqlGenerator.cs
- GridViewRowCollection.cs
- Int32.cs
- CodeGeneratorOptions.cs
- BooleanSwitch.cs