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
- SchemaComplexType.cs
- IResourceProvider.cs
- HyperLinkField.cs
- BitmapEffectRenderDataResource.cs
- HighlightVisual.cs
- DeflateStream.cs
- TreeViewCancelEvent.cs
- ClassDataContract.cs
- GPRECT.cs
- CodeIdentifier.cs
- ProfileManager.cs
- SerialReceived.cs
- SqlNodeAnnotation.cs
- CodeSubDirectoriesCollection.cs
- XPathSelectionIterator.cs
- sqlstateclientmanager.cs
- LinearKeyFrames.cs
- RevocationPoint.cs
- UInt32Converter.cs
- XPathSingletonIterator.cs
- SafeRightsManagementSessionHandle.cs
- DeferredBinaryDeserializerExtension.cs
- XmlSchemaValidationException.cs
- errorpatternmatcher.cs
- CacheSection.cs
- CapabilitiesSection.cs
- IndentTextWriter.cs
- CryptoStream.cs
- SrgsNameValueTag.cs
- TextDecorationCollectionConverter.cs
- SecurityProtocolCorrelationState.cs
- SingleQueryOperator.cs
- CultureTable.cs
- MissingSatelliteAssemblyException.cs
- PageAsyncTask.cs
- ControlParameter.cs
- EntityRecordInfo.cs
- ExtentKey.cs
- BitmapDownload.cs
- StylusOverProperty.cs
- ConfigurationElement.cs
- WindowShowOrOpenTracker.cs
- NamedPipeTransportSecurity.cs
- VisualTreeUtils.cs
- ProfileSettingsCollection.cs
- WebPartDisplayModeEventArgs.cs
- ImageKeyConverter.cs
- PropertyMapper.cs
- RequestQueryProcessor.cs
- TraceHandler.cs
- Literal.cs
- documentation.cs
- CompilationPass2Task.cs
- DataControlLinkButton.cs
- Dynamic.cs
- SiteOfOriginPart.cs
- BrowserInteropHelper.cs
- ComEventsInfo.cs
- NativeMethods.cs
- FigureParaClient.cs
- MouseGestureValueSerializer.cs
- DataSourceView.cs
- TypeConverterHelper.cs
- AttachedPropertyInfo.cs
- SourceElementsCollection.cs
- GACMembershipCondition.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- LocalizableAttribute.cs
- basecomparevalidator.cs
- UserControl.cs
- HttpWriter.cs
- OpCodes.cs
- LateBoundBitmapDecoder.cs
- PropertyNames.cs
- ViewKeyConstraint.cs
- ListViewSortEventArgs.cs
- PenThread.cs
- NameValueFileSectionHandler.cs
- SymmetricAlgorithm.cs
- ResizeGrip.cs
- MachineKeyConverter.cs
- ToolStripPanelRenderEventArgs.cs
- SafePEFileHandle.cs
- RequestQueryProcessor.cs
- TargetParameterCountException.cs
- DSASignatureFormatter.cs
- XmlBinaryWriter.cs
- StringToken.cs
- BufferedReadStream.cs
- KnownAssemblyEntry.cs
- Hash.cs
- MetadataWorkspace.cs
- Italic.cs
- ManipulationStartingEventArgs.cs
- CustomBinding.cs
- LazyTextWriterCreator.cs
- ButtonColumn.cs
- XmlArrayItemAttributes.cs
- FlowDecisionDesigner.xaml.cs
- PolicyManager.cs