Adds Options for JwtAuthentication (30min prod - 1day dev)
This commit is contained in:
@@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Google.Apis.Oauth2.v2.Data;
|
||||
using System.Security.Claims;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Hutopy.Application.Common.Interfaces;
|
||||
using Hutopy.Application.Common.Models;
|
||||
using Hutopy.Application.Users.Models;
|
||||
@@ -12,7 +8,7 @@ using Hutopy.Infrastructure.Utils;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace Hutopy.Infrastructure.Identity;
|
||||
|
||||
@@ -22,7 +18,7 @@ public class IdentityService(
|
||||
IUserClaimsPrincipalFactory<ApplicationUser> userClaimsPrincipalFactory,
|
||||
IAuthorizationService authorizationService,
|
||||
IHttpContextAccessor contextAccessor,
|
||||
IConfiguration configuration
|
||||
IOptionsSnapshot<JwtOptions> jwtOptions
|
||||
)
|
||||
: IIdentityService
|
||||
{
|
||||
@@ -424,13 +420,12 @@ public class IdentityService(
|
||||
var user = await GetUserByUserNameAsync(userName);
|
||||
|
||||
if (user is null) throw new InvalidOperationException();
|
||||
|
||||
var jwtSection = configuration.GetRequiredSection("Authentication:Jwt");
|
||||
|
||||
var token = JwtTokenHelper.GenerateJwtToken(
|
||||
issuer: jwtSection["Issuer"] ?? "",
|
||||
audience: jwtSection["Audience"] ?? "",
|
||||
key: jwtSection["Key"] ?? "",
|
||||
expiresIn: jwtOptions.Value.Lifetime,
|
||||
issuer: jwtOptions.Value.Issuer,
|
||||
audience: jwtOptions.Value.Audience,
|
||||
key: jwtOptions.Value.Key,
|
||||
userId: user.Id,
|
||||
email: user.Email,
|
||||
firstname: user.FirstName,
|
||||
|
||||
11
src/Infrastructure/Identity/JwtOptions.cs
Normal file
11
src/Infrastructure/Identity/JwtOptions.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace Hutopy.Infrastructure.Identity;
|
||||
|
||||
public record JwtOptions
|
||||
{
|
||||
public const string SectionName = "Authentication:Jwt";
|
||||
|
||||
public required TimeSpan Lifetime { get; init; }
|
||||
public required string Issuer { get; init; }
|
||||
public required string Audience { get; init; }
|
||||
public required string Key { get; init; }
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Security.Claims;
|
||||
using System.Text;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
@@ -10,6 +8,7 @@ namespace Hutopy.Infrastructure.Utils;
|
||||
public static class JwtTokenHelper
|
||||
{
|
||||
public static string GenerateJwtToken(
|
||||
TimeSpan expiresIn,
|
||||
string issuer,
|
||||
string audience,
|
||||
string key,
|
||||
@@ -42,7 +41,7 @@ public static class JwtTokenHelper
|
||||
issuer: issuer,
|
||||
audience: audience,
|
||||
claims: claims,
|
||||
expires: DateTime.Now.AddMinutes(1440),
|
||||
expires: DateTime.Now.Add(expiresIn),
|
||||
signingCredentials: credentials);
|
||||
|
||||
return new JwtSecurityTokenHandler().WriteToken(token);
|
||||
|
||||
Reference in New Issue
Block a user