MessageSecurityTokenVersion.cs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. //------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------
  4. namespace System.ServiceModel.Security
  5. {
  6. using System.Collections.ObjectModel;
  7. using System.ServiceModel.Channels;
  8. using System.ServiceModel;
  9. using System.Runtime.Serialization;
  10. using System.IdentityModel.Tokens;
  11. using System.IdentityModel.Selectors;
  12. sealed class MessageSecurityTokenVersion : SecurityTokenVersion
  13. {
  14. SecurityVersion securityVersion;
  15. TrustVersion trustVersion;
  16. SecureConversationVersion secureConversationVersion;
  17. bool emitBspRequiredAttributes;
  18. string toString;
  19. ReadOnlyCollection<string> supportedSpecs;
  20. const string bsp10ns = @"http://ws-i.org/profiles/basic-security/core/1.0";
  21. static MessageSecurityTokenVersion wss11 = new MessageSecurityTokenVersion(
  22. SecurityVersion.WSSecurity11,
  23. TrustVersion.WSTrustFeb2005,
  24. SecureConversationVersion.WSSecureConversationFeb2005,
  25. "WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005",
  26. false,
  27. XD.SecurityXXX2005Dictionary.Namespace.Value,
  28. XD.TrustFeb2005Dictionary.Namespace.Value,
  29. XD.SecureConversationFeb2005Dictionary.Namespace.Value);
  30. static MessageSecurityTokenVersion wss10bsp10 = new MessageSecurityTokenVersion(
  31. SecurityVersion.WSSecurity10,
  32. TrustVersion.WSTrustFeb2005,
  33. SecureConversationVersion.WSSecureConversationFeb2005,
  34. "WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10",
  35. true,
  36. XD.SecurityJan2004Dictionary.Namespace.Value,
  37. XD.TrustFeb2005Dictionary.Namespace.Value,
  38. XD.SecureConversationFeb2005Dictionary.Namespace.Value,
  39. bsp10ns);
  40. static MessageSecurityTokenVersion wss11bsp10 = new MessageSecurityTokenVersion(
  41. SecurityVersion.WSSecurity11,
  42. TrustVersion.WSTrustFeb2005,
  43. SecureConversationVersion.WSSecureConversationFeb2005,
  44. "WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10",
  45. true,
  46. XD.SecurityXXX2005Dictionary.Namespace.Value,
  47. XD.TrustFeb2005Dictionary.Namespace.Value,
  48. XD.SecureConversationFeb2005Dictionary.Namespace.Value,
  49. bsp10ns);
  50. static MessageSecurityTokenVersion wss10oasisdec2005bsp10 = new MessageSecurityTokenVersion(
  51. SecurityVersion.WSSecurity10,
  52. TrustVersion.WSTrust13,
  53. SecureConversationVersion.WSSecureConversation13,
  54. "WSSecurity10WSTrust13WSSecureConversation13BasicSecurityProfile10",
  55. true,
  56. XD.SecurityXXX2005Dictionary.Namespace.Value,
  57. DXD.TrustDec2005Dictionary.Namespace.Value,
  58. DXD.SecureConversationDec2005Dictionary.Namespace.Value
  59. );
  60. static MessageSecurityTokenVersion wss11oasisdec2005 = new MessageSecurityTokenVersion(
  61. SecurityVersion.WSSecurity11,
  62. TrustVersion.WSTrust13,
  63. SecureConversationVersion.WSSecureConversation13,
  64. "WSSecurity11WSTrust13WSSecureConversation13",
  65. false,
  66. XD.SecurityJan2004Dictionary.Namespace.Value,
  67. DXD.TrustDec2005Dictionary.Namespace.Value,
  68. DXD.SecureConversationDec2005Dictionary.Namespace.Value
  69. );
  70. static MessageSecurityTokenVersion wss11oasisdec2005bsp10 = new MessageSecurityTokenVersion(
  71. SecurityVersion.WSSecurity11,
  72. TrustVersion.WSTrust13,
  73. SecureConversationVersion.WSSecureConversation13,
  74. "WSSecurity11WSTrust13WSSecureConversation13BasicSecurityProfile10",
  75. true,
  76. XD.SecurityXXX2005Dictionary.Namespace.Value,
  77. DXD.TrustDec2005Dictionary.Namespace.Value,
  78. DXD.SecureConversationDec2005Dictionary.Namespace.Value
  79. );
  80. public static MessageSecurityTokenVersion WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005
  81. {
  82. get
  83. {
  84. return wss11;
  85. }
  86. }
  87. public static MessageSecurityTokenVersion WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10
  88. {
  89. get
  90. {
  91. return wss11bsp10;
  92. }
  93. }
  94. public static MessageSecurityTokenVersion WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10
  95. {
  96. get
  97. {
  98. return wss10bsp10;
  99. }
  100. }
  101. public static MessageSecurityTokenVersion WSSecurity10WSTrust13WSSecureConversation13BasicSecurityProfile10
  102. {
  103. get
  104. {
  105. return wss10oasisdec2005bsp10;
  106. }
  107. }
  108. public static MessageSecurityTokenVersion WSSecurity11WSTrust13WSSecureConversation13
  109. {
  110. get
  111. {
  112. return wss11oasisdec2005;
  113. }
  114. }
  115. public static MessageSecurityTokenVersion WSSecurity11WSTrust13WSSecureConversation13BasicSecurityProfile10
  116. {
  117. get
  118. {
  119. return wss11oasisdec2005bsp10;
  120. }
  121. }
  122. public static MessageSecurityTokenVersion GetSecurityTokenVersion(SecurityVersion version, bool emitBspAttributes)
  123. {
  124. if (version == SecurityVersion.WSSecurity10)
  125. {
  126. if (emitBspAttributes)
  127. return MessageSecurityTokenVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10;
  128. else
  129. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
  130. }
  131. else if (version == SecurityVersion.WSSecurity11)
  132. {
  133. if (emitBspAttributes)
  134. return MessageSecurityTokenVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005BasicSecurityProfile10;
  135. else
  136. return MessageSecurityTokenVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005;
  137. }
  138. else
  139. {
  140. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
  141. }
  142. }
  143. MessageSecurityTokenVersion(SecurityVersion securityVersion, TrustVersion trustVersion, SecureConversationVersion secureConversationVersion, string toString, bool emitBspRequiredAttributes, params string[] supportedSpecs)
  144. : base()
  145. {
  146. this.emitBspRequiredAttributes = emitBspRequiredAttributes;
  147. this.supportedSpecs = new ReadOnlyCollection<string>(supportedSpecs);
  148. this.toString = toString;
  149. this.securityVersion = securityVersion;
  150. this.trustVersion = trustVersion;
  151. this.secureConversationVersion = secureConversationVersion;
  152. }
  153. public bool EmitBspRequiredAttributes
  154. {
  155. get
  156. {
  157. return this.emitBspRequiredAttributes;
  158. }
  159. }
  160. public SecurityVersion SecurityVersion
  161. {
  162. get
  163. {
  164. return this.securityVersion;
  165. }
  166. }
  167. public TrustVersion TrustVersion
  168. {
  169. get
  170. {
  171. return this.trustVersion;
  172. }
  173. }
  174. public SecureConversationVersion SecureConversationVersion
  175. {
  176. get
  177. {
  178. return this.secureConversationVersion;
  179. }
  180. }
  181. public override ReadOnlyCollection<string> GetSecuritySpecifications()
  182. {
  183. return supportedSpecs;
  184. }
  185. public override string ToString()
  186. {
  187. return this.toString;
  188. }
  189. }
  190. }