feat(SecurityExtensions): Erforderliche WriteToken-Methoden über Erweiterungen anstelle der Schnittstellenimplementierung hinzugefügt
This commit is contained in:
parent
079f0c69c7
commit
7f9459f6cf
@ -13,13 +13,5 @@ namespace DigitalData.Core.Abstractions.Security
|
|||||||
SecurityToken CreateToken(TPrincipal subject, string apiRoute);
|
SecurityToken CreateToken(TPrincipal subject, string apiRoute);
|
||||||
|
|
||||||
string WriteToken(SecurityToken token);
|
string WriteToken(SecurityToken token);
|
||||||
|
|
||||||
string WriteToken(SecurityTokenDescriptor descriptor);
|
|
||||||
|
|
||||||
string WriteToken(TPrincipal subject, IAsymmetricTokenDescriptor descriptor);
|
|
||||||
|
|
||||||
string WriteToken(TPrincipal subject, string issuer, string audience);
|
|
||||||
|
|
||||||
string WriteToken(TPrincipal subject, string apiRoute);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,10 +1,11 @@
|
|||||||
using System.Security.Cryptography;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace DigitalData.Core.Abstractions.Security
|
namespace DigitalData.Core.Abstractions.Security
|
||||||
{
|
{
|
||||||
public static class SecurityExtensions
|
public static class SecurityExtensions
|
||||||
{
|
{
|
||||||
|
#region Unique Security Context
|
||||||
public static IEnumerable<TUniqueSecurityContext> GetByIssuer<TUniqueSecurityContext>(this IEnumerable<TUniqueSecurityContext> contextes, string issuer) where TUniqueSecurityContext: IUniqueSecurityContext
|
public static IEnumerable<TUniqueSecurityContext> GetByIssuer<TUniqueSecurityContext>(this IEnumerable<TUniqueSecurityContext> contextes, string issuer) where TUniqueSecurityContext: IUniqueSecurityContext
|
||||||
=> contextes.Where(c => c.Issuer == issuer);
|
=> contextes.Where(c => c.Issuer == issuer);
|
||||||
|
|
||||||
@ -28,7 +29,9 @@ namespace DigitalData.Core.Abstractions.Security
|
|||||||
|
|
||||||
public static bool TryMatch<TUniqueSecurityContext>(this IEnumerable<TUniqueSecurityContext> contextes, IUniqueSecurityContext lookupContext, out TUniqueSecurityContext context) where TUniqueSecurityContext : IUniqueSecurityContext
|
public static bool TryMatch<TUniqueSecurityContext>(this IEnumerable<TUniqueSecurityContext> contextes, IUniqueSecurityContext lookupContext, out TUniqueSecurityContext context) where TUniqueSecurityContext : IUniqueSecurityContext
|
||||||
=> contextes.TryGet(lookupContext.Issuer, lookupContext.Audience, out context);
|
=> contextes.TryGet(lookupContext.Issuer, lookupContext.Audience, out context);
|
||||||
|
#endregion Unique Security Context
|
||||||
|
|
||||||
|
#region De/serilization
|
||||||
internal static byte[] Base64ToByte(this string base64String) => Convert.FromBase64String(base64String);
|
internal static byte[] Base64ToByte(this string base64String) => Convert.FromBase64String(base64String);
|
||||||
|
|
||||||
internal static string BytesToString(this byte[] bytes) => Encoding.UTF8.GetString(bytes);
|
internal static string BytesToString(this byte[] bytes) => Encoding.UTF8.GetString(bytes);
|
||||||
@ -39,7 +42,24 @@ namespace DigitalData.Core.Abstractions.Security
|
|||||||
|
|
||||||
public static string Decrypt(this IAsymmetricDecryptor decryptor, string data) => decryptor
|
public static string Decrypt(this IAsymmetricDecryptor decryptor, string data) => decryptor
|
||||||
.Decrypt(data.Base64ToByte()).BytesToString();
|
.Decrypt(data.Base64ToByte()).BytesToString();
|
||||||
|
#endregion De/serilization
|
||||||
|
|
||||||
|
#region Asymmetric Encryptor
|
||||||
public static string Encrypt(this IAsymmetricEncryptor encryptor, string data) => encryptor.Encrypt(data.ToBytes()).ToBase64String();
|
public static string Encrypt(this IAsymmetricEncryptor encryptor, string data) => encryptor.Encrypt(data.ToBytes()).ToBase64String();
|
||||||
|
#endregion Asymmetric Encryptor
|
||||||
|
|
||||||
|
#region Jwt Signature Handler
|
||||||
|
public static string WriteToken<TPrincipal>(this IJwtSignatureHandler<TPrincipal> handler, SecurityTokenDescriptor descriptor)
|
||||||
|
=> handler.WriteToken(handler.CreateToken(descriptor));
|
||||||
|
|
||||||
|
public static string WriteToken<TPrincipal>(this IJwtSignatureHandler<TPrincipal> handler, TPrincipal subject, IAsymmetricTokenDescriptor descriptor)
|
||||||
|
=> handler.WriteToken(handler.CreateToken(subject: subject, descriptor: descriptor));
|
||||||
|
|
||||||
|
public static string WriteToken<TPrincipal>(this IJwtSignatureHandler<TPrincipal> handler, TPrincipal subject, string issuer, string audience)
|
||||||
|
=> handler.WriteToken(handler.CreateToken(subject: subject, issuer: issuer, audience: audience));
|
||||||
|
|
||||||
|
public static string WriteToken<TPrincipal>(this IJwtSignatureHandler<TPrincipal> handler, TPrincipal subject, string apiRoute)
|
||||||
|
=> handler.WriteToken(handler.CreateToken(subject: subject, apiRoute: apiRoute));
|
||||||
|
#endregion Jwt Signature Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -44,15 +44,5 @@ namespace DigitalData.Core.Security
|
|||||||
|
|
||||||
return CreateToken(subject: subject, descriptor: desc);
|
return CreateToken(subject: subject, descriptor: desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string WriteToken(SecurityTokenDescriptor descriptor) => WriteToken(CreateToken(descriptor));
|
|
||||||
|
|
||||||
public string WriteToken(TPrincipal subject, IAsymmetricTokenDescriptor descriptor)
|
|
||||||
=> WriteToken(CreateToken(subject: subject, descriptor: descriptor));
|
|
||||||
|
|
||||||
public string WriteToken(TPrincipal subject, string issuer, string audience)
|
|
||||||
=> WriteToken(CreateToken(subject: subject, issuer: issuer, audience: audience));
|
|
||||||
|
|
||||||
public string WriteToken(TPrincipal subject, string apiRoute) => WriteToken(CreateToken(subject: subject, apiRoute: apiRoute));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user