1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
using System;
using System.Collections.Generic;
using System.Text;
using System.IdentityModel.Tokens;
using System.Collections.ObjectModel;
namespace System.IdentityModel.Tokens
{
/// <summary>
/// A pseudo-token which handles encryption for a token which
/// does not natively support it.
/// </summary>
/// <remarks>
/// For example, a SamlSecurityToken has no notion of how to encrypt
/// itself, so to issue an encrypted SAML11 assertion, wrap a
/// SamlSecurityToken with an EncryptedSecurityToken and provide
/// appropriate EncryptingCredentials.
/// </remarks>
public class EncryptedSecurityToken : SecurityToken
{
EncryptingCredentials _encryptingCredentials;
SecurityToken _realToken;
/// <summary>
/// Creates an instance of EncryptedSecurityToken.
/// </summary>
/// <param name="token">The <see cref="SecurityToken"/> to encrypt.</param>
/// <param name="encryptingCredentials">The <see cref="EncryptingCredentials"/> to use for encryption.</param>
public EncryptedSecurityToken(SecurityToken token, EncryptingCredentials encryptingCredentials)
{
if (null == token)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token");
}
if (null == encryptingCredentials)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("encryptingCredentials");
}
_encryptingCredentials = encryptingCredentials;
_realToken = token;
}
/// <summary>
/// Inherited from <see cref="SecurityToken"/>.
/// </summary>
public override bool CanCreateKeyIdentifierClause<T>()
{
return _realToken.CanCreateKeyIdentifierClause<T>();
}
/// <summary>
/// Inherited from <see cref="SecurityToken"/>.
/// </summary>
public override T CreateKeyIdentifierClause<T>()
{
return _realToken.CreateKeyIdentifierClause<T>();
}
/// <summary>
/// Gets the <see cref="EncryptingCredentials"/> to use for encryption.
/// </summary>
public EncryptingCredentials EncryptingCredentials
{
get { return _encryptingCredentials; }
}
/// <summary>
/// Gets a unique identifier of the security token.
/// </summary>
public override string Id
{
get { return _realToken.Id; }
}
/// <summary>
/// Inherited from <see cref="SecurityToken"/>.
/// </summary>
public override bool MatchesKeyIdentifierClause(SecurityKeyIdentifierClause keyIdentifierClause)
{
return _realToken.MatchesKeyIdentifierClause(keyIdentifierClause);
}
/// <summary>
/// Inherited from <see cref="SecurityToken"/>.
/// </summary>
public override SecurityKey ResolveKeyIdentifierClause(SecurityKeyIdentifierClause keyIdentifierClause)
{
return _realToken.ResolveKeyIdentifierClause(keyIdentifierClause);
}
/// <summary>
/// Inherited from <see cref="SecurityToken"/>.
/// </summary>
public override ReadOnlyCollection<SecurityKey> SecurityKeys
{
get { return _realToken.SecurityKeys; }
}
/// <summary>
/// Gets the encrypted <see cref="SecurityToken"/>.
/// </summary>
public SecurityToken Token
{
get { return _realToken; }
}
/// <summary>
/// Gets the first instant in time at which this security token is valid.
/// </summary>
public override DateTime ValidFrom
{
get { return _realToken.ValidFrom; }
}
/// <summary>
/// Gets the last instant in time at which this security token is valid.
/// </summary>
public override DateTime ValidTo
{
get { return _realToken.ValidTo; }
}
}
}
|