elsa-core/src/modules/Elsa.Identity/Extensions/ModuleExtensions.cs
Sipke Schoorstra 30c4e5b1e7
Implement API key authentication (#3834)
* Implement API key storage

* Implement API key validation

* Implement EF Core providers
2023-03-26 23:53:17 +02:00

44 lines
1.5 KiB
C#

using Elsa.Features.Services;
using Elsa.Identity.Features;
// ReSharper disable once CheckNamespace
namespace Elsa.Extensions;
/// <summary>
/// Extensions for <see cref="IModule"/> that installs the <see cref="IdentityFeature"/> feature.
/// </summary>
public static class ModuleExtensions
{
/// <summary>
/// Installs & configures the <see cref="IdentityFeature"/> feature.
/// </summary>
public static IModule UseIdentity(this IModule module, Action<IdentityFeature> configure)
{
module.Configure(configure);
return module;
}
/// <summary>
/// Installs & configures the <see cref="IdentityFeature"/> feature.
/// </summary>
public static IModule UseIdentity(this IModule module, string signingKey, string issuer = "http://elsa.api", string audience = "http://elsa.api", TimeSpan? tokenLifetime = default)
{
module.UseIdentity(identity => identity.TokenOptions = options =>
{
options.Audience = audience;
options.Issuer = issuer;
options.AccessTokenLifetime = tokenLifetime ?? TimeSpan.FromHours(1);
options.SigningKey = signingKey;
});
return module;
}
/// <summary>
/// Installs & configures the <see cref="IdentityFeature"/> feature.
/// </summary>
public static IModule UseDefaultAuthentication(this IModule module, Action<DefaultAuthenticationFeature>? configure = default)
{
module.Configure(configure);
return module;
}
}