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
- HttpProtocolReflector.cs
- BrushValueSerializer.cs
- X509CertificateClaimSet.cs
- WorkflowItemPresenter.cs
- ChangeInterceptorAttribute.cs
- DataSourceGroupCollection.cs
- DragDropManager.cs
- SspiHelper.cs
- ResourceDescriptionAttribute.cs
- XPathScanner.cs
- BinaryReader.cs
- BitmapEffectGeneralTransform.cs
- RsaSecurityTokenParameters.cs
- WebDisplayNameAttribute.cs
- SqlMethods.cs
- AdornerHitTestResult.cs
- TypeBinaryExpression.cs
- HttpCapabilitiesEvaluator.cs
- FlowNode.cs
- PartBasedPackageProperties.cs
- ItemsPanelTemplate.cs
- TrustLevelCollection.cs
- EntityConnection.cs
- ICspAsymmetricAlgorithm.cs
- ThreadPool.cs
- XmlSiteMapProvider.cs
- Int32RectValueSerializer.cs
- XPathDocument.cs
- TextRangeBase.cs
- InfoCardSymmetricCrypto.cs
- Geometry.cs
- Substitution.cs
- GestureRecognitionResult.cs
- DefaultValueTypeConverter.cs
- HttpCachePolicyElement.cs
- GenerateScriptTypeAttribute.cs
- PageEventArgs.cs
- Vector3DCollection.cs
- DataObject.cs
- HtmlInputControl.cs
- SeparatorAutomationPeer.cs
- PhoneCall.cs
- TCPListener.cs
- CompilationUnit.cs
- WSHttpSecurityElement.cs
- TimeSpanSecondsConverter.cs
- HighlightComponent.cs
- DesignerResources.cs
- ScrollEventArgs.cs
- DataServiceKeyAttribute.cs
- SafeNativeMethods.cs
- PropertyRecord.cs
- EllipseGeometry.cs
- BuildResultCache.cs
- ConfigViewGenerator.cs
- TreeNodeMouseHoverEvent.cs
- ListViewHitTestInfo.cs
- DragCompletedEventArgs.cs
- DateTimeUtil.cs
- GlobalizationAssembly.cs
- ConfigurationProperty.cs
- XmlNodeChangedEventManager.cs
- UIElementCollection.cs
- Material.cs
- HierarchicalDataBoundControl.cs
- ActivityTypeDesigner.xaml.cs
- DataStreamFromComStream.cs
- TrustSection.cs
- OutputScopeManager.cs
- URLAttribute.cs
- BitmapFrame.cs
- EventRecord.cs
- SmiEventSink.cs
- AssociationType.cs
- WindowsPen.cs
- JournalEntry.cs
- ClientTargetSection.cs
- GroupQuery.cs
- SessionPageStateSection.cs
- FormsAuthenticationTicket.cs
- XmlUtf8RawTextWriter.cs
- VectorKeyFrameCollection.cs
- CompilerParameters.cs
- LoadRetryConstantStrategy.cs
- TemplatedAdorner.cs
- HtmlForm.cs
- VideoDrawing.cs
- BamlResourceDeserializer.cs
- TextWriterTraceListener.cs
- ExpressionBuilder.cs
- HtmlElementEventArgs.cs
- StreamUpgradeAcceptor.cs
- AppearanceEditorPart.cs
- WebBrowserEvent.cs
- Stylesheet.cs
- HebrewCalendar.cs
- CompareInfo.cs
- TrackingLocation.cs
- PauseStoryboard.cs
- RelatedPropertyManager.cs