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
- TypedDatasetGenerator.cs
- HostedHttpContext.cs
- _LocalDataStore.cs
- SignatureToken.cs
- _SecureChannel.cs
- PrePostDescendentsWalker.cs
- ScaleTransform.cs
- IsolatedStorageFile.cs
- ConfigurationValidatorBase.cs
- AppManager.cs
- ProtocolsSection.cs
- ExpressionPrinter.cs
- OdbcConnectionString.cs
- MachineKey.cs
- Material.cs
- KeyNotFoundException.cs
- KnownBoxes.cs
- CancellationTokenSource.cs
- StringBuilder.cs
- ScriptManager.cs
- StickyNoteContentControl.cs
- SQLDecimal.cs
- Page.cs
- XmlHierarchyData.cs
- ZipPackagePart.cs
- HttpMethodAttribute.cs
- TextClipboardData.cs
- ContentOperations.cs
- ClientData.cs
- ProtocolElement.cs
- PointLightBase.cs
- storepermission.cs
- ShapingWorkspace.cs
- TreeNodeStyleCollectionEditor.cs
- ResourceManagerWrapper.cs
- EnumerableValidator.cs
- RelatedCurrencyManager.cs
- Style.cs
- StringResourceManager.cs
- ObjectDataSource.cs
- TextStore.cs
- XamlUtilities.cs
- TableMethodGenerator.cs
- ToolStripSeparator.cs
- DataTableExtensions.cs
- Types.cs
- Rotation3D.cs
- X509Extension.cs
- WsatConfiguration.cs
- UmAlQuraCalendar.cs
- ContainerAction.cs
- XmlIncludeAttribute.cs
- FileBasedResourceGroveler.cs
- WorkflowRuntimeEndpoint.cs
- BindStream.cs
- DependencyPropertyConverter.cs
- NamespaceDisplayAutomationPeer.cs
- EntityDataSourceEntitySetNameItem.cs
- PartEditor.cs
- TransformedBitmap.cs
- XmlObjectSerializerReadContextComplexJson.cs
- SiteMapPath.cs
- LinkTarget.cs
- DataContractJsonSerializer.cs
- IdentityNotMappedException.cs
- DynamicEndpoint.cs
- PolicyException.cs
- ElementsClipboardData.cs
- UiaCoreProviderApi.cs
- EntityConnectionStringBuilder.cs
- SupportsEventValidationAttribute.cs
- DataProviderNameConverter.cs
- CompiledXpathExpr.cs
- XPathAncestorQuery.cs
- HexParser.cs
- ExtentCqlBlock.cs
- TreeNodeMouseHoverEvent.cs
- DefaultProxySection.cs
- ToggleProviderWrapper.cs
- PackageDigitalSignatureManager.cs
- XamlWrapperReaders.cs
- _StreamFramer.cs
- UriExt.cs
- IgnoreDeviceFilterElementCollection.cs
- iisPickupDirectory.cs
- CodeGotoStatement.cs
- UntypedNullExpression.cs
- ClientScriptManager.cs
- EqualityComparer.cs
- QueryExpr.cs
- SqlTrackingService.cs
- SqlDataSourceSelectingEventArgs.cs
- DataGridViewRowCollection.cs
- FontUnitConverter.cs
- LayoutTableCell.cs
- MarkupWriter.cs
- InvalidWMPVersionException.cs
- GlobalizationSection.cs
- ConsumerConnectionPointCollection.cs
- JsonWriter.cs