You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,94 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Configuration
|
||||
{
|
||||
using System.ComponentModel;
|
||||
using System.ServiceModel.Channels;
|
||||
using System.ServiceModel.Description;
|
||||
using System.Configuration;
|
||||
using System.Globalization;
|
||||
using System.Net.Security;
|
||||
using System.ServiceModel.Security;
|
||||
using System.ServiceModel.Security.Tokens;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Xml;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
public sealed partial class SecurityElement : SecurityElementBase
|
||||
{
|
||||
public SecurityElement()
|
||||
{
|
||||
this.SecureConversationBootstrap.IsSecurityElementBootstrap = true; // Tell the bootstrap it's potentially okay to optimize itself out of config representation
|
||||
}
|
||||
|
||||
[ConfigurationProperty(ConfigurationStrings.SecureConversationBootstrap)]
|
||||
public SecurityElementBase SecureConversationBootstrap
|
||||
{
|
||||
get { return (SecurityElementBase)base[ConfigurationStrings.SecureConversationBootstrap]; }
|
||||
}
|
||||
|
||||
public override void CopyFrom(ServiceModelExtensionElement from)
|
||||
{
|
||||
base.CopyFrom(from);
|
||||
|
||||
SecurityElement source = (SecurityElement)from;
|
||||
|
||||
#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
|
||||
if (PropertyValueOrigin.Default != source.ElementInformation.Properties[ConfigurationStrings.SecureConversationBootstrap].ValueOrigin)
|
||||
this.SecureConversationBootstrap.CopyFrom(source.SecureConversationBootstrap);
|
||||
}
|
||||
|
||||
protected internal override BindingElement CreateBindingElement(bool createTemplateOnly)
|
||||
{
|
||||
SecurityBindingElement result;
|
||||
if (this.AuthenticationMode == AuthenticationMode.SecureConversation)
|
||||
{
|
||||
if (this.SecureConversationBootstrap == null)
|
||||
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SecureConversationNeedsBootstrapSecurity)));
|
||||
if (this.SecureConversationBootstrap.AuthenticationMode == AuthenticationMode.SecureConversation)
|
||||
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SecureConversationBootstrapCannotUseSecureConversation)));
|
||||
SecurityBindingElement bootstrapSecurity = (SecurityBindingElement)this.SecureConversationBootstrap.CreateBindingElement(createTemplateOnly);
|
||||
result = SecurityBindingElement.CreateSecureConversationBindingElement(bootstrapSecurity, this.RequireSecurityContextCancellation);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = (SecurityBindingElement)base.CreateBindingElement(createTemplateOnly);
|
||||
}
|
||||
|
||||
this.ApplyConfiguration(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
protected override void AddBindingTemplates(Dictionary<AuthenticationMode, SecurityBindingElement> bindingTemplates)
|
||||
{
|
||||
base.AddBindingTemplates(bindingTemplates);
|
||||
AddBindingTemplate(bindingTemplates, AuthenticationMode.SecureConversation);
|
||||
}
|
||||
|
||||
void InitializeSecureConversationParameters(SecureConversationSecurityTokenParameters sc, bool initializeNestedBindings)
|
||||
{
|
||||
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.RequireSecurityContextCancellation, sc.RequireCancellation);
|
||||
this.CanRenewSecurityContextToken = sc.CanRenewSession; // can't use default value optimization here because ApplyConfiguration relies on the runtime default instead, which is the opposite of the config default
|
||||
if (sc.BootstrapSecurityBindingElement != null)
|
||||
{
|
||||
this.SecureConversationBootstrap.InitializeFrom(sc.BootstrapSecurityBindingElement, initializeNestedBindings);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void InitializeNestedTokenParameterSettings(SecurityTokenParameters sp, bool initializeNestedBindings)
|
||||
{
|
||||
if (sp is SecureConversationSecurityTokenParameters)
|
||||
this.InitializeSecureConversationParameters((SecureConversationSecurityTokenParameters)sp, initializeNestedBindings);
|
||||
else
|
||||
base.InitializeNestedTokenParameterSettings(sp, initializeNestedBindings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user