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
- MemberPathMap.cs
- DataViewSetting.cs
- MILUtilities.cs
- TypeSystemHelpers.cs
- StringArrayConverter.cs
- ComboBoxRenderer.cs
- SystemSounds.cs
- PenThreadPool.cs
- PropertyNames.cs
- LocalizabilityAttribute.cs
- CheckBoxList.cs
- SpellerError.cs
- RoleService.cs
- ModifierKeysConverter.cs
- RegexCharClass.cs
- AnnouncementEndpointElement.cs
- ItemCollection.cs
- ImageListUtils.cs
- StaticExtension.cs
- ServiceModelReg.cs
- TableRowCollection.cs
- ProcessHostServerConfig.cs
- FontFamilyIdentifier.cs
- ParserStreamGeometryContext.cs
- KeyedHashAlgorithm.cs
- EncryptedType.cs
- PropertySegmentSerializer.cs
- ClientCultureInfo.cs
- StoragePropertyMapping.cs
- WorkflowClientDeliverMessageWrapper.cs
- StateItem.cs
- DocumentViewer.cs
- Utils.cs
- InputReportEventArgs.cs
- OracleTimeSpan.cs
- FlowNode.cs
- MultiDataTrigger.cs
- XmlRawWriter.cs
- ConfigPathUtility.cs
- EntryWrittenEventArgs.cs
- Baml2006ReaderContext.cs
- DirectoryNotFoundException.cs
- FixedSOMTableCell.cs
- ToolBar.cs
- DesignerUtility.cs
- Rect3D.cs
- HScrollBar.cs
- MissingFieldException.cs
- Exceptions.cs
- WebScriptServiceHost.cs
- DateTimeConverter2.cs
- DummyDataSource.cs
- DataListItemEventArgs.cs
- SchemaType.cs
- ObjectDisposedException.cs
- AvTraceDetails.cs
- ResXResourceWriter.cs
- WebBrowserContainer.cs
- XsltOutput.cs
- IInstanceTable.cs
- SafePointer.cs
- TiffBitmapEncoder.cs
- CryptoConfig.cs
- RuleEngine.cs
- CommandTreeTypeHelper.cs
- CompiledRegexRunnerFactory.cs
- Misc.cs
- URLString.cs
- ProxyWebPartManager.cs
- NamedElement.cs
- BlurBitmapEffect.cs
- BrowserCapabilitiesCodeGenerator.cs
- querybuilder.cs
- InputManager.cs
- HotSpot.cs
- XslNumber.cs
- XpsFont.cs
- ToolstripProfessionalRenderer.cs
- EntityContainerRelationshipSet.cs
- DataRecordObjectView.cs
- ElementUtil.cs
- FontEmbeddingManager.cs
- TextBoxRenderer.cs
- PropagatorResult.cs
- XPathItem.cs
- CodeStatement.cs
- StatusBarItemAutomationPeer.cs
- _BufferOffsetSize.cs
- EventLogRecord.cs
- TextContainerChangeEventArgs.cs
- XamlFigureLengthSerializer.cs
- HMACSHA256.cs
- MULTI_QI.cs
- ArgIterator.cs
- SecurityHeaderTokenResolver.cs
- Oid.cs
- EntryPointNotFoundException.cs
- PipeStream.cs
- EditCommandColumn.cs
- Pair.cs