SessionSecurityToken.cs 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Collections.ObjectModel;
  3. using System.Runtime.Serialization;
  4. using System.Security.Claims;
  5. using System.Xml;
  6. namespace System.IdentityModel.Tokens
  7. {
  8. [Serializable]
  9. public class SessionSecurityToken : SecurityToken
  10. {
  11. private ReadOnlyCollection<SecurityKey> securityKeys;
  12. private DateTime validFrom;
  13. private DateTime validTo;
  14. public ClaimsPrincipal ClaimsPrincipal { get; private set; }
  15. public string Context { get; private set; }
  16. public UniqueId ContextId { get; private set; }
  17. public string EndpointId { get; private set; }
  18. [MonoTODO]
  19. public override string Id { get { throw new NotImplementedException (); } }
  20. public bool IsPersistent { get; set; }
  21. public bool IsReferenceMode { get; set; }
  22. public DateTime KeyEffectiveTime { get; private set; }
  23. public DateTime KeyExpirationTime { get; private set; }
  24. public UniqueId KeyGeneration { get; private set; }
  25. public Uri SecureConversationVersion { get; private set; }
  26. public override ReadOnlyCollection<SecurityKey> SecurityKeys { get { return securityKeys; } }
  27. public override DateTime ValidFrom { get { return validFrom; } }
  28. public override DateTime ValidTo { get { return validTo; } }
  29. public SessionSecurityToken (ClaimsPrincipal claimsPrincipal)
  30. : this (claimsPrincipal, null)
  31. { }
  32. protected SessionSecurityToken (SerializationInfo info, StreamingContext context) {
  33. throw new NotImplementedException ();
  34. }
  35. public SessionSecurityToken (ClaimsPrincipal claimsPrincipal, string context)
  36. : this (claimsPrincipal, context, DateTime.UtcNow, DateTime.UtcNow + SessionSecurityTokenHandler.DefaultTokenLifetime)
  37. { }
  38. public SessionSecurityToken (ClaimsPrincipal claimsPrincipal, TimeSpan lifetime)
  39. : this (claimsPrincipal, null, DateTime.UtcNow, DateTime.UtcNow + lifetime)
  40. { }
  41. public SessionSecurityToken (ClaimsPrincipal claimsPrincipal, string context, DateTime? validFrom, DateTime? validTo)
  42. : this (claimsPrincipal, new UniqueId (), context, String.Empty, validFrom, validTo, null)
  43. { }
  44. public SessionSecurityToken (ClaimsPrincipal claimsPrincipal, string context, string endpointId, DateTime? validFrom, DateTime? validTo)
  45. : this(claimsPrincipal, new UniqueId (), context, endpointId, validFrom, validTo, null)
  46. { }
  47. public SessionSecurityToken (ClaimsPrincipal claimsPrincipal, UniqueId contextId, string context, string endpointId, TimeSpan lifetime, SymmetricSecurityKey key)
  48. : this (claimsPrincipal, contextId, context, endpointId, DateTime.UtcNow, lifetime, key)
  49. { }
  50. public SessionSecurityToken (ClaimsPrincipal claimsPrincipal, UniqueId contextId, string context, string endpointId, DateTime validFrom, TimeSpan lifetime, SymmetricSecurityKey key)
  51. : this (claimsPrincipal, contextId, context, endpointId, validFrom, validFrom + lifetime, key)
  52. { }
  53. public SessionSecurityToken (ClaimsPrincipal claimsPrincipal, UniqueId contextId, string context, string endpointId, DateTime? validFrom, DateTime? validTo, SymmetricSecurityKey key) {
  54. ClaimsPrincipal = claimsPrincipal;
  55. ContextId = contextId;
  56. Context = context;
  57. EndpointId = endpointId;
  58. validFrom = (validFrom.HasValue) ? validFrom.Value.ToUniversalTime () : DateTime.UtcNow;
  59. validTo = (validTo.HasValue) ? validTo.Value.ToUniversalTime () : ValidFrom + SessionSecurityTokenHandler.DefaultTokenLifetime;
  60. securityKeys = new ReadOnlyCollection<SecurityKey> (new SecurityKey[] { new InMemorySymmetricSecurityKey ((key == null) ? null : key.GetSymmetricKey ()) });
  61. }
  62. [MonoTODO]
  63. public virtual void GetObjectData (SerializationInfo info, StreamingContext context) {
  64. throw new NotImplementedException ();
  65. }
  66. }
  67. }