|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Collections.ObjectModel;
using System.IdentityModel.Selectors;
namespace System.ServiceModel.Security
{
public sealed class MessageSecurityTokenVersion : SecurityTokenVersion
{
private SecurityVersion _securityVersion;
private TrustVersion _trustVersion;
private SecureConversationVersion _secureConversationVersion;
private bool _emitBspRequiredAttributes;
private string _toString;
private ReadOnlyCollection<string> _supportedSpecs;
private const string bsp10ns = @"http://ws-i.org/profiles/basic-security/core/1.0";
private static MessageSecurityTokenVersion s_wss11 = new MessageSecurityTokenVersion(
SecurityVersion.WSSecurity11,
TrustVersion.WSTrustFeb2005,
SecureConversationVersion.WSSecureConversationFeb2005,
"WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005",
false,
XD.SecurityXXX2005Dictionary.Namespace.Value,
XD.TrustFeb2005Dictionary.Namespace.Value,
XD.SecureConversationFeb2005Dictionary.Namespace.Value);
private static MessageSecurityTokenVersion s_wss10bsp10 = new MessageSecurityTokenVersion(
SecurityVersion.WSSecurity10,
TrustVersion.WSTrustFeb2005,
SecureConversationVersion.WSSecureConversationFeb2005,
"WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10",
true,
XD.SecurityJan2004Dictionary.Namespace.Value,
XD.TrustFeb2005Dictionary.Namespace.Value,
XD.SecureConversationFeb2005Dictionary.Namespace.Value,
bsp10ns);
private static MessageSecurityTokenVersion s_wss11bsp10 = new MessageSecurityTokenVersion(
SecurityVersion.WSSecurity11,
TrustVersion.WSTrustFeb2005,
SecureConversationVersion.WSSecureConversationFeb2005,
"WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10",
true,
XD.SecurityXXX2005Dictionary.Namespace.Value,
XD.TrustFeb2005Dictionary.Namespace.Value,
XD.SecureConversationFeb2005Dictionary.Namespace.Value,
bsp10ns);
private static MessageSecurityTokenVersion s_wss10oasisdec2005bsp10 = new MessageSecurityTokenVersion(
SecurityVersion.WSSecurity10,
TrustVersion.WSTrust13,
SecureConversationVersion.WSSecureConversation13,
"WSSecurity10WSTrust13WSSecureConversation13BasicSecurityProfile10",
true,
XD.SecurityXXX2005Dictionary.Namespace.Value,
DXD.TrustDec2005Dictionary.Namespace.Value,
DXD.SecureConversationDec2005Dictionary.Namespace.Value
);
private static MessageSecurityTokenVersion s_wss11oasisdec2005 = new MessageSecurityTokenVersion(
SecurityVersion.WSSecurity11,
TrustVersion.WSTrust13,
SecureConversationVersion.WSSecureConversation13,
"WSSecurity11WSTrust13WSSecureConversation13",
false,
XD.SecurityJan2004Dictionary.Namespace.Value,
DXD.TrustDec2005Dictionary.Namespace.Value,
DXD.SecureConversationDec2005Dictionary.Namespace.Value
);
private static MessageSecurityTokenVersion s_wss11oasisdec2005bsp10 = new MessageSecurityTokenVersion(
SecurityVersion.WSSecurity11,
TrustVersion.WSTrust13,
SecureConversationVersion.WSSecureConversation13,
"WSSecurity11WSTrust13WSSecureConversation13BasicSecurityProfile10",
true,
XD.SecurityXXX2005Dictionary.Namespace.Value,
DXD.TrustDec2005Dictionary.Namespace.Value,
DXD.SecureConversationDec2005Dictionary.Namespace.Value
);
public static MessageSecurityTokenVersion WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005
{
get
{
return s_wss11;
}
}
public static MessageSecurityTokenVersion WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10
{
get
{
return s_wss11bsp10;
}
}
public static MessageSecurityTokenVersion WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10
{
get
{
return s_wss10bsp10;
}
}
public static MessageSecurityTokenVersion WSSecurity10WSTrust13WSSecureConversation13BasicSecurityProfile10
{
get
{
return s_wss10oasisdec2005bsp10;
}
}
public static MessageSecurityTokenVersion WSSecurity11WSTrust13WSSecureConversation13
{
get
{
return s_wss11oasisdec2005;
}
}
public static MessageSecurityTokenVersion WSSecurity11WSTrust13WSSecureConversation13BasicSecurityProfile10
{
get
{
return s_wss11oasisdec2005bsp10;
}
}
public static MessageSecurityTokenVersion GetSecurityTokenVersion(SecurityVersion version, bool emitBspAttributes)
{
if (version == SecurityVersion.WSSecurity10)
{
if (emitBspAttributes)
return MessageSecurityTokenVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10;
else
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
}
else if (version == SecurityVersion.WSSecurity11)
{
if (emitBspAttributes)
return MessageSecurityTokenVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10;
else
return MessageSecurityTokenVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005;
}
else
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
}
}
private MessageSecurityTokenVersion(SecurityVersion securityVersion, TrustVersion trustVersion, SecureConversationVersion secureConversationVersion, string toString, bool emitBspRequiredAttributes, params string[] supportedSpecs)
: base()
{
_emitBspRequiredAttributes = emitBspRequiredAttributes;
_supportedSpecs = new ReadOnlyCollection<string>(supportedSpecs);
_toString = toString;
_securityVersion = securityVersion;
_trustVersion = trustVersion;
_secureConversationVersion = secureConversationVersion;
}
public bool EmitBspRequiredAttributes
{
get
{
return _emitBspRequiredAttributes;
}
}
public SecurityVersion SecurityVersion
{
get
{
return _securityVersion;
}
}
public TrustVersion TrustVersion
{
get
{
return _trustVersion;
}
}
public SecureConversationVersion SecureConversationVersion
{
get
{
return _secureConversationVersion;
}
}
public override ReadOnlyCollection<string> GetSecuritySpecifications()
{
return _supportedSpecs;
}
public override string ToString()
{
return _toString;
}
}
}
|