| File: System\ServiceModel\Security\MessageSecurityTokenVersion.cs | Web Access |
| Project: src\src\System.ServiceModel.Primitives\src\System.ServiceModel.Primitives.csproj (System.ServiceModel.Primitives) |
// 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 string _toString; private ReadOnlyCollection<string> _supportedSpecs; private const string bsp10ns = @"http://ws-i.org/profiles/basic-security/core/1.0"; 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; } = new MessageSecurityTokenVersion( SecurityVersion.WSSecurity11, TrustVersion.WSTrustFeb2005, SecureConversationVersion.WSSecureConversationFeb2005, "WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005", false, XD.SecurityXXX2005Dictionary.Namespace.Value, XD.TrustFeb2005Dictionary.Namespace.Value, XD.SecureConversationFeb2005Dictionary.Namespace.Value); 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; } public SecurityVersion SecurityVersion { get; } public TrustVersion TrustVersion { get; } public SecureConversationVersion SecureConversationVersion { get; } public override ReadOnlyCollection<string> GetSecuritySpecifications() { return _supportedSpecs; } public override string ToString() { return _toString; } } }