Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / IssuedTokensHeader.cs / 1 / IssuedTokensHeader.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Security { using System.Collections.Generic; using System.ServiceModel.Channels; using System.Collections.ObjectModel; using System.Globalization; using System.ServiceModel; using System.Xml; using System.IdentityModel.Selectors; using System.ServiceModel.Diagnostics; sealed class IssuedTokensHeader : MessageHeader { ReadOnlyCollectiontokenIssuances; SecurityStandardsManager standardsManager; string actor; bool mustUnderstand; bool relay; bool isRefParam; public IssuedTokensHeader(RequestSecurityTokenResponse tokenIssuance, MessageSecurityVersion version, SecurityTokenSerializer tokenSerializer) : this(tokenIssuance, new SecurityStandardsManager(version, tokenSerializer)) { } public IssuedTokensHeader(RequestSecurityTokenResponse tokenIssuance, SecurityStandardsManager standardsManager) : base() { if (tokenIssuance == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("tokenIssuance"); } Collection coll = new Collection (); coll.Add(tokenIssuance); Initialize(coll, standardsManager); } public IssuedTokensHeader(IEnumerable tokenIssuances, SecurityStandardsManager standardsManager) : base() { if (tokenIssuances == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("tokenIssuances"); } int index = 0; Collection coll = new Collection (); foreach (RequestSecurityTokenResponse rstr in tokenIssuances) { if (rstr == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(String.Format(CultureInfo.InvariantCulture, "tokenIssuances[{0}]", index)); } coll.Add(rstr); ++index; } Initialize(coll, standardsManager); } void Initialize(Collection coll, SecurityStandardsManager standardsManager) { if (standardsManager == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("standardsManager")); } this.standardsManager = standardsManager; this.tokenIssuances = new ReadOnlyCollection (coll); this.actor = base.Actor; this.mustUnderstand = base.MustUnderstand; this.relay = base.Relay; } public IssuedTokensHeader(XmlReader xmlReader, MessageVersion version, SecurityStandardsManager standardsManager) : base() { if (xmlReader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("xmlReader"); } if (standardsManager == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("standardsManager")); } this.standardsManager = standardsManager; XmlDictionaryReader reader = XmlDictionaryReader.CreateDictionaryReader(xmlReader); MessageHeader.GetHeaderAttributes(reader, version, out this.actor, out this.mustUnderstand, out this.relay, out this.isRefParam); reader.ReadStartElement(this.Name, this.Namespace); Collection coll = new Collection (); if (this.standardsManager.TrustDriver.IsAtRequestSecurityTokenResponseCollection(reader)) { RequestSecurityTokenResponseCollection rstrColl = this.standardsManager.TrustDriver.CreateRequestSecurityTokenResponseCollection(reader); foreach (RequestSecurityTokenResponse rstr in rstrColl.RstrCollection) { coll.Add(rstr); } } else { RequestSecurityTokenResponse rstr = this.standardsManager.TrustDriver.CreateRequestSecurityTokenResponse(reader); coll.Add(rstr); } this.tokenIssuances = new ReadOnlyCollection (coll); reader.ReadEndElement(); } public ReadOnlyCollection TokenIssuances { get { return this.tokenIssuances; } } public override string Actor { get { return this.actor; } } public override bool IsReferenceParameter { get { return this.isRefParam; } } public override bool MustUnderstand { get { return this.mustUnderstand; } } public override bool Relay { get { return this.relay; } } public override string Name { get { return this.standardsManager.TrustDriver.IssuedTokensHeaderName; } } public override string Namespace { get { return this.standardsManager.TrustDriver.IssuedTokensHeaderNamespace; } } protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { if (this.tokenIssuances.Count == 1) { this.standardsManager.TrustDriver.WriteRequestSecurityTokenResponse(this.tokenIssuances[0], writer); } else { RequestSecurityTokenResponseCollection rstrCollection = new RequestSecurityTokenResponseCollection(this.tokenIssuances, this.standardsManager); rstrCollection.WriteTo(writer); } } internal static Collection ExtractIssuances(Message message, MessageSecurityVersion version, WSSecurityTokenSerializer tokenSerializer, string[] actors, XmlQualifiedName expectedAppliesToQName) { return ExtractIssuances(message, new SecurityStandardsManager(version, tokenSerializer), actors, expectedAppliesToQName); } // if expectedAppliesToQName is null all issuances matching the actors are returned. internal static Collection ExtractIssuances(Message message, SecurityStandardsManager standardsManager, string[] actors, XmlQualifiedName expectedAppliesToQName) { if (message == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message"); } if (standardsManager == null) { standardsManager = SecurityStandardsManager.DefaultInstance; } if (actors == null) { throw TraceUtility.ThrowHelperArgumentNull("actors", message); } Collection issuances = new Collection (); for (int i = 0; i < message.Headers.Count; ++i) { if (message.Headers[i].Name == standardsManager.TrustDriver.IssuedTokensHeaderName && message.Headers[i].Namespace == standardsManager.TrustDriver.IssuedTokensHeaderNamespace) { bool isValidActor = false; for (int j = 0; j < actors.Length; ++j) { if (actors[j] == message.Headers[i].Actor) { isValidActor = true; break; } } if (!isValidActor) { continue; } IssuedTokensHeader issuedTokensHeader = new IssuedTokensHeader(message.Headers.GetReaderAtHeader(i), message.Version, standardsManager); for (int k = 0; k < issuedTokensHeader.TokenIssuances.Count; ++k) { bool isMatch; if (expectedAppliesToQName != null) { string issuanceAppliesToName; string issuanceAppliesToNs; issuedTokensHeader.TokenIssuances[k].GetAppliesToQName(out issuanceAppliesToName, out issuanceAppliesToNs); if (issuanceAppliesToName == expectedAppliesToQName.Name && issuanceAppliesToNs == expectedAppliesToQName.Namespace) { isMatch = true; } else { isMatch = false; } } else { isMatch = true; } if (isMatch) { issuances.Add(issuedTokensHeader.TokenIssuances[k]); } } } } return issuances; } } } // 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
- PerspectiveCamera.cs
- GatewayDefinition.cs
- ConditionCollection.cs
- Stacktrace.cs
- Window.cs
- BitmapSizeOptions.cs
- ToolStripArrowRenderEventArgs.cs
- NullableIntMinMaxAggregationOperator.cs
- CaseStatementSlot.cs
- PageContentAsyncResult.cs
- AnnotationMap.cs
- Region.cs
- WebAdminConfigurationHelper.cs
- CqlQuery.cs
- XmlNode.cs
- SymbolMethod.cs
- TypeGeneratedEventArgs.cs
- CounterCreationDataConverter.cs
- InputLanguageEventArgs.cs
- JournalEntry.cs
- InputMethodStateTypeInfo.cs
- TemplateInstanceAttribute.cs
- MenuItemAutomationPeer.cs
- WrapPanel.cs
- SqlNotificationEventArgs.cs
- NotSupportedException.cs
- SecurityContextSecurityToken.cs
- ImageClickEventArgs.cs
- FormsAuthenticationModule.cs
- PageParser.cs
- GridView.cs
- SchemaCollectionCompiler.cs
- ChannelServices.cs
- BuiltInExpr.cs
- StrokeRenderer.cs
- ImpersonationContext.cs
- LogLogRecord.cs
- TouchFrameEventArgs.cs
- PrimitiveSchema.cs
- CodeAttributeDeclarationCollection.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- Document.cs
- EventProxy.cs
- Control.cs
- xmlfixedPageInfo.cs
- EntityContainerEmitter.cs
- TrustManager.cs
- TCPListener.cs
- HtmlElementEventArgs.cs
- XmlCompatibilityReader.cs
- HybridObjectCache.cs
- FileCodeGroup.cs
- QuaternionRotation3D.cs
- SerializationObjectManager.cs
- ComplexLine.cs
- SerializationUtility.cs
- SQLGuid.cs
- PageCatalogPart.cs
- CodeMemberField.cs
- ServicesUtilities.cs
- Converter.cs
- ScriptingSectionGroup.cs
- DataGridViewComboBoxColumn.cs
- OneWayChannelFactory.cs
- TextTrailingCharacterEllipsis.cs
- HtmlPanelAdapter.cs
- hwndwrapper.cs
- IDictionary.cs
- EntityDataSourceConfigureObjectContext.cs
- LazyInitializer.cs
- DesignerWidgets.cs
- SecurityHelper.cs
- BlockCollection.cs
- X509SecurityToken.cs
- OLEDB_Enum.cs
- EnumerableCollectionView.cs
- Internal.cs
- SqlGenerator.cs
- RelatedCurrencyManager.cs
- DirectoryInfo.cs
- GridViewDeletedEventArgs.cs
- EventWaitHandle.cs
- ConstraintEnumerator.cs
- PathParser.cs
- AsymmetricAlgorithm.cs
- TraversalRequest.cs
- CapabilitiesPattern.cs
- ToolStripDropDownClosingEventArgs.cs
- DataGridViewSelectedColumnCollection.cs
- ReadContentAsBinaryHelper.cs
- DataBindingCollectionEditor.cs
- Iis7Helper.cs
- DataGridViewImageCell.cs
- DisplayMemberTemplateSelector.cs
- AddInActivator.cs
- ProcessModelSection.cs
- CodeTryCatchFinallyStatement.cs
- PagePropertiesChangingEventArgs.cs
- GPRECT.cs
- Expression.DebuggerProxy.cs