Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / SessionSymmetricMessageSecurityProtocolFactory.cs / 1 / SessionSymmetricMessageSecurityProtocolFactory.cs
//---------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Security { using System.IdentityModel.Tokens; using System.ServiceModel.Channels; using System.ServiceModel; using System.IdentityModel.Selectors; using System.ServiceModel.Security.Tokens; class SessionSymmetricMessageSecurityProtocolFactory : MessageSecurityProtocolFactory { SecurityTokenParameters securityTokenParameters; SessionDerivedKeySecurityTokenParameters derivedKeyTokenParameters; public SessionSymmetricMessageSecurityProtocolFactory() : base() { } public SecurityTokenParameters SecurityTokenParameters { get { return this.securityTokenParameters; } set { ThrowIfImmutable(); this.securityTokenParameters = value; } } public override EndpointIdentity GetIdentityOfSelf() { if (this.SecurityTokenManager is IEndpointIdentityProvider) { SecurityTokenRequirement requirement = CreateRecipientSecurityTokenRequirement(); this.SecurityTokenParameters.InitializeSecurityTokenRequirement(requirement); return ((IEndpointIdentityProvider)this.SecurityTokenManager).GetIdentityOfSelf(requirement); } else { return base.GetIdentityOfSelf(); } } protected override SecurityProtocol OnCreateSecurityProtocol(EndpointAddress target, Uri via, object listenerSecurityState, TimeSpan timeout) { if (this.ActAsInitiator) { return new InitiatorSessionSymmetricMessageSecurityProtocol(this, target, via); } else { return new AcceptorSessionSymmetricMessageSecurityProtocol(this, null); } } public override void OnOpen(TimeSpan timeout) { if (this.SecurityTokenParameters == null) { OnPropertySettingsError("SecurityTokenParameters", true); } if (this.SecurityTokenParameters.RequireDerivedKeys) { this.ExpectKeyDerivation = true; this.derivedKeyTokenParameters = new SessionDerivedKeySecurityTokenParameters(this.ActAsInitiator); } base.OnOpen(timeout); } internal SecurityTokenParameters GetTokenParameters() { if (this.derivedKeyTokenParameters != null) { return this.derivedKeyTokenParameters; } else { return this.securityTokenParameters; } } } internal class SessionDerivedKeySecurityTokenParameters : SecurityTokenParameters { bool actAsInitiator; protected SessionDerivedKeySecurityTokenParameters(SessionDerivedKeySecurityTokenParameters other) : base(other) { this.actAsInitiator = other.actAsInitiator; } public SessionDerivedKeySecurityTokenParameters(bool actAsInitiator) : base() { this.actAsInitiator = actAsInitiator; this.InclusionMode = actAsInitiator ? SecurityTokenInclusionMode.AlwaysToRecipient : SecurityTokenInclusionMode.AlwaysToInitiator; base.RequireDerivedKeys = false; } internal protected override bool SupportsClientAuthentication { get { return false; } } internal protected override bool SupportsServerAuthentication { get { return false; } } internal protected override bool SupportsClientWindowsIdentity { get { return false; } } internal protected override bool HasAsymmetricKey { get { return false; } } protected override SecurityTokenParameters CloneCore() { return new SessionDerivedKeySecurityTokenParameters(this); } internal protected override SecurityKeyIdentifierClause CreateKeyIdentifierClause(SecurityToken token, SecurityTokenReferenceStyle referenceStyle) { if (referenceStyle == SecurityTokenReferenceStyle.Internal) { return token.CreateKeyIdentifierClause(); } else { return null; } } internal protected override bool MatchesKeyIdentifierClause(SecurityToken token, SecurityKeyIdentifierClause keyIdentifierClause, SecurityTokenReferenceStyle referenceStyle) { if (referenceStyle == SecurityTokenReferenceStyle.Internal) { LocalIdKeyIdentifierClause localClause = keyIdentifierClause as LocalIdKeyIdentifierClause; if (localClause == null) { return false; } else { return (localClause.LocalId == token.Id); } } else { return false; } } protected internal override void InitializeSecurityTokenRequirement(SecurityTokenRequirement requirement) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException()); } } } // 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
- OperatingSystem.cs
- InputLanguageSource.cs
- MimePart.cs
- AccessedThroughPropertyAttribute.cs
- SplashScreen.cs
- ThreadInterruptedException.cs
- SqlDataSourceConfigureSelectPanel.cs
- Normalization.cs
- ClientBuildManagerCallback.cs
- WebPartVerbCollection.cs
- XmlSchemaSimpleContent.cs
- GridViewUpdateEventArgs.cs
- Activity.cs
- PasswordPropertyTextAttribute.cs
- XXXInfos.cs
- GroupStyle.cs
- PasswordPropertyTextAttribute.cs
- HtmlTextArea.cs
- DataServiceHostFactory.cs
- ExecutionProperties.cs
- StringFreezingAttribute.cs
- FontFamily.cs
- BitmapEffectrendercontext.cs
- BrowsableAttribute.cs
- AttributeSetAction.cs
- HtmlInputText.cs
- LinqDataSource.cs
- SqlStatistics.cs
- FrugalList.cs
- TableColumnCollection.cs
- InputScopeConverter.cs
- ListViewItemEventArgs.cs
- DesigntimeLicenseContextSerializer.cs
- HMACSHA384.cs
- WebEvents.cs
- TextTreeObjectNode.cs
- MethodBuilderInstantiation.cs
- SystemIPGlobalProperties.cs
- XhtmlConformanceSection.cs
- PlainXmlWriter.cs
- Hashtable.cs
- AdPostCacheSubstitution.cs
- WpfPayload.cs
- TabControlDesigner.cs
- PriorityQueue.cs
- WebCategoryAttribute.cs
- IndexOutOfRangeException.cs
- GridSplitterAutomationPeer.cs
- ComPlusSynchronizationContext.cs
- CompilerInfo.cs
- AssertFilter.cs
- CompleteWizardStep.cs
- PathGeometry.cs
- SendActivityEventArgs.cs
- TableAutomationPeer.cs
- GeneralTransform2DTo3D.cs
- MenuItemAutomationPeer.cs
- Int32Rect.cs
- ErrorEventArgs.cs
- SynchronizedInputAdaptor.cs
- Inline.cs
- ResolvePPIDRequest.cs
- CompilerCollection.cs
- AdjustableArrowCap.cs
- UrlAuthorizationModule.cs
- XhtmlBasicTextViewAdapter.cs
- FontClient.cs
- MouseOverProperty.cs
- CryptoKeySecurity.cs
- NavigationEventArgs.cs
- CompensationDesigner.cs
- CachedBitmap.cs
- SecurityKeyUsage.cs
- NotSupportedException.cs
- DropSource.cs
- LZCodec.cs
- DashStyles.cs
- PingOptions.cs
- CategoryGridEntry.cs
- TypedTableBaseExtensions.cs
- SchemaRegistration.cs
- InvokeGenerator.cs
- SerializationEventsCache.cs
- TextSelectionHighlightLayer.cs
- ValidateNames.cs
- DelegatedStream.cs
- Package.cs
- StaticResourceExtension.cs
- WsdlContractConversionContext.cs
- RelatedEnd.cs
- IsolationInterop.cs
- FullTextBreakpoint.cs
- ObjectListDesigner.cs
- CryptoConfig.cs
- RadioButtonBaseAdapter.cs
- DirectoryGroupQuery.cs
- PeerEndPoint.cs
- SoapElementAttribute.cs
- DataGridViewColumnEventArgs.cs
- Drawing.cs