Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / RequestSecurityTokenForRemoteTokenFactory.cs / 1 / RequestSecurityTokenForRemoteTokenFactory.cs
namespace Microsoft.InfoCards { using System; using System.Xml; using System.Collections; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // This derviced variant of RequestSecurityToken is used to generate an RST to the remote token factory. // internal class RequestSecurityTokenForRemoteTokenFactory : RequestSecurityToken { public RequestSecurityTokenForRemoteTokenFactory( RequestSecurityTokenParameters rstParams ) : base( rstParams ) { } protected override void WriteAppliesToElement() { switch( AppliesToBehaviorDecisionTable.GetAppliesToBehaviorDecisionForRst( Policy, m_rstParams.Card.RequireAppliesto ) ) { case AppliesToBehaviorDecision.SendRPAppliesTo: IDT.TraceDebug( "IPSTSCLIENT: Writing RP AppliesTo to RST" ); Serializer.WriteAppliesToElement( Policy.PolicyAppliesTo, m_rstParams.Version ); break; case AppliesToBehaviorDecision.SendCustomAppliesTo: IDT.TraceDebug( "IPSTSCLIENT: Writing Recipient Identity to RST to create a custom AppliesTo" ); Serializer.WriteAppliesToElement( Policy.ImmediateTokenRecipient.Address, m_rstParams.Version ); break; default: // // Do not write AppliesTo // break; } } protected override void WriteSecondaryParametersElement() { // // Write out a copy of the policy XML to the SecondaryParameters element if we are using the // oasis 2007 version of WS-Trust. // if( XmlNames.WSSpecificationVersion.WSTrustOasis2007 == ProtocolVersionProfile.WSTrust.Version ) { // // If the policy contains optional claims but the user has elected to not sent optional claims, then we // cannot sent secondaryParameters (as we do not want accidental disclosure of information to a // non-auditing STS). // bool writeSeconaryParameters = true; if( Policy.OptionalClaims.Length > 0 ) { // // If the policy contains one or more optional claims, check to see if the user // is willing to send optional claims. // writeSeconaryParameters = m_rstParams.DiscloseOptionalClaims && !( OptionalClaimsExceedCard( m_rstParams.Card, m_rstParams.Policy ) ); } // // Write the secondaryParameters element only when AppliesTo is present // switch( AppliesToBehaviorDecisionTable.GetAppliesToBehaviorDecisionForRst( Policy, m_rstParams.Card.RequireAppliesto ) ) { case AppliesToBehaviorDecision.SendRPAppliesTo: case AppliesToBehaviorDecision.SendCustomAppliesTo: break; default: // // Do not write SecondaryParameters as the appliesTo decision is either 'not send' or 'failed match' // writeSeconaryParameters = false; break; } if( writeSeconaryParameters ) { if( null != Policy.RelyingPartyPolicy ) { Serializer.WriteSecondaryParametersElement( Policy.RelyingPartyPolicy.PolicyXml ); } else { // // If the incoming RST Template did not contain SecondaryParameters, we simply write the // original request. // Serializer.WriteSecondaryParametersElement( Policy.ClientPolicy.PolicyXml ); } } } } protected override void CustomWriteBodyContents( XmlDictionaryWriter writer ) { InitializeWriters( writer ); WriteRSTOpeningElement(); WriteRequestTypeElement(); WriteInfoCardReferenceElement(); WriteClaimsElement(); WriteKeyTypeElement(); WriteKeySupportingElements(); WriteAppliesToElement(); WritePPIDElement(); WriteEncryptionAlgorithmElement(); WritePassOnElements(); WriteDisplayTokenElement(); WriteUnprocessedPolicyElements(); WriteSecondaryParametersElement(); WriteEndElement(); } // // Summary // Checks to see if the optional claims in the policy exceed the claims present in the card. // // Returns // True if at least one optional claim in the policy is not present in the card. False otherwise. // private bool OptionalClaimsExceedCard( InfoCard card, InfoCardPolicy policy ) { // // Compare the set of requested optional claims in the policy against the card's claims. // InfoCardClaimCollection claims = card.GetClaims(); bool claimNotFoundInCard = false; foreach( string claimUri in policy.OptionalClaims ) { if( !claims.ContainsKey( claimUri ) ) { claimNotFoundInCard = true; } } return claimNotFoundInCard; } } } // 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
- WebEncodingValidatorAttribute.cs
- XmlCDATASection.cs
- DispatcherSynchronizationContext.cs
- HandlerMappingMemo.cs
- WebPartAuthorizationEventArgs.cs
- ThemeDirectoryCompiler.cs
- listviewsubitemcollectioneditor.cs
- TypeToken.cs
- SqlPersonalizationProvider.cs
- GeneralTransform3D.cs
- TraceSwitch.cs
- StringExpressionSet.cs
- MimeImporter.cs
- HtmlInputPassword.cs
- TraceSection.cs
- ReflectionPermission.cs
- ListBindableAttribute.cs
- SubpageParaClient.cs
- ExpandableObjectConverter.cs
- Internal.cs
- InternalConfigRoot.cs
- DataMisalignedException.cs
- DeviceContext.cs
- SingleAnimationBase.cs
- ContractSearchPattern.cs
- RadioButtonFlatAdapter.cs
- TaskHelper.cs
- StreamHelper.cs
- BaseDataListActionList.cs
- SmtpDigestAuthenticationModule.cs
- ContextQuery.cs
- ApplicationDirectoryMembershipCondition.cs
- EnumConverter.cs
- EventLogEntry.cs
- ObjectDataSourceMethodEventArgs.cs
- XmlWrappingWriter.cs
- FormatConvertedBitmap.cs
- DrawingCollection.cs
- Vector3D.cs
- HandoffBehavior.cs
- ActivityPreviewDesigner.cs
- TypeConverter.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- DbConnectionPoolIdentity.cs
- CodeIterationStatement.cs
- SafeRightsManagementSessionHandle.cs
- RegisteredDisposeScript.cs
- PartitionerQueryOperator.cs
- FlowchartDesigner.Helpers.cs
- Pointer.cs
- XmlUtilWriter.cs
- QueryReaderSettings.cs
- SignatureSummaryDialog.cs
- AsyncOperation.cs
- mactripleDES.cs
- BehaviorEditorPart.cs
- SymmetricAlgorithm.cs
- AdCreatedEventArgs.cs
- CapabilitiesState.cs
- DesignerCategoryAttribute.cs
- XmlSchemaInclude.cs
- Vector3DAnimationUsingKeyFrames.cs
- DependencyPropertyDescriptor.cs
- Misc.cs
- DataGridCommandEventArgs.cs
- EventTrigger.cs
- XmlDownloadManager.cs
- TreeNodeStyleCollection.cs
- PrimitiveCodeDomSerializer.cs
- EventListenerClientSide.cs
- UIElementPropertyUndoUnit.cs
- InplaceBitmapMetadataWriter.cs
- InfoCardSymmetricAlgorithm.cs
- Attachment.cs
- ExpressionLexer.cs
- DescendentsWalkerBase.cs
- SortQuery.cs
- UserNameSecurityTokenAuthenticator.cs
- NumberFunctions.cs
- QueryReaderSettings.cs
- XsltCompileContext.cs
- HttpStreamXmlDictionaryWriter.cs
- ProtocolsInstallComponent.cs
- URL.cs
- NonParentingControl.cs
- DrawItemEvent.cs
- EventRecord.cs
- RowParagraph.cs
- ProgressChangedEventArgs.cs
- PropertyPath.cs
- OrderByQueryOptionExpression.cs
- LowerCaseStringConverter.cs
- ProfilePropertyNameValidator.cs
- SqlConnectionString.cs
- XamlPointCollectionSerializer.cs
- FilteredSchemaElementLookUpTable.cs
- CommandHelpers.cs
- EventRoute.cs
- SiteMapDataSourceView.cs
- MetadataCollection.cs