elsa-core/src/modules/Elsa.Identity/Options/IdentityTokenOptions.cs

42 lines
1.4 KiB
C#
Raw Normal View History

2023-01-01 21:54:07 +00:00
using System.Text;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
namespace Elsa.Identity.Options;
public class IdentityTokenOptions
{
public string SigningKey { get; set; }
public string Issuer { get; set; } = "http://elsa.api";
public string Audience { get; set; } = "http://elsa.api";
public TimeSpan? Lifetime { get; set; } = TimeSpan.FromHours(1);
public SecurityKey CreateSecurityKey() => new SymmetricSecurityKey(Encoding.ASCII.GetBytes(SigningKey));
public void ConfigureJwtBearerOptions(JwtBearerOptions options) =>
options.TokenValidationParameters = new TokenValidationParameters
{
IssuerSigningKey = CreateSecurityKey(),
ValidAudience = Audience,
ValidIssuer = Issuer
};
/// <summary>
/// Deconstructor.
/// </summary>
internal void Deconstruct(out string signingKey, out string issuer, out string audience, out TimeSpan? lifetime)
{
signingKey = SigningKey;
issuer = Issuer;
audience = Audience;
lifetime = Lifetime;
}
internal void CopyFrom(IdentityTokenOptions identityOptions)
{
SigningKey = identityOptions.SigningKey;
Audience = identityOptions.Audience;
Issuer = identityOptions.Issuer;
Lifetime = identityOptions.Lifetime;
}
}