Merge branch 'development' into feature/add-tenant-to-user

This commit is contained in:
Sergio Matias 2025-08-26 14:16:33 -06:00
commit fe4c0696e8
5 changed files with 20 additions and 10 deletions

View File

@ -96,5 +96,13 @@ namespace Core.Thalos.BuildingBlocks
[BsonRepresentation(BsonType.String)] [BsonRepresentation(BsonType.String)]
[JsonPropertyName("token")] [JsonPropertyName("token")]
public string? Token { get; set; } = null; public string? Token { get; set; } = null;
/// <summary>
/// Gets or sets the tenant identifier associated with the user.
/// </summary>
[BsonElement("tenantId")]
[BsonRepresentation(BsonType.ObjectId)]
[JsonPropertyName("tenantId")]
public string? TenantId { get; set; }
} }
} }

View File

@ -5,9 +5,9 @@ using Microsoft.Extensions.Configuration;
namespace Core.Thalos.BuildingBlocks namespace Core.Thalos.BuildingBlocks
{ {
public class GoogleAuthorization( public class GoogleAuthorization(
IGoogleAuthHelper googleHelper, IConfiguration config) : IGoogleAuthorization IGoogleAuthHelper googleHelper, IConfiguration config, GoogleAuthSettings googlesettings) : IGoogleAuthorization
{ {
private string RedirectUrl = config["Authentication:Google:RedirectUri"]!; private string RedirectUrl = googlesettings.RedirectUri ?? string.Empty;
public async Task<UserCredential> ExchangeCodeForToken(string code) public async Task<UserCredential> ExchangeCodeForToken(string code)
{ {

View File

@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.Identity.Web; using Microsoft.Identity.Web;
using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Tokens;
using System.Security.Cryptography; using System.Security.Cryptography;
@ -87,8 +86,6 @@ namespace Core.Thalos.BuildingBlocks.Configuration
options.Audience = jwtIssuerOptions?.Audience; options.Audience = jwtIssuerOptions?.Audience;
options.SigningCredentials = new SigningCredentials(rsaPrivateKey, SecurityAlgorithms.RsaSha256); options.SigningCredentials = new SigningCredentials(rsaPrivateKey, SecurityAlgorithms.RsaSha256);
}); });
services.AddSingleton<IOptions<JwtIssuerOptions>>(Microsoft.Extensions.Options.Options.Create(jwtIssuerOptions));
} }
public static void AddAzureAuthentication(AuthSettings authSettings, IConfiguration configuration, IServiceCollection services) public static void AddAzureAuthentication(AuthSettings authSettings, IConfiguration configuration, IServiceCollection services)
@ -116,6 +113,8 @@ namespace Core.Thalos.BuildingBlocks.Configuration
public static void AddGoogleAuthentication(IServiceCollection services, GoogleAuthSettings googleAuthSettings) public static void AddGoogleAuthentication(IServiceCollection services, GoogleAuthSettings googleAuthSettings)
{ {
services.AddSingleton<GoogleAuthSettings>(googleAuthSettings);
services.AddAuthentication(options => services.AddAuthentication(options =>
{ {
options.DefaultAuthenticateScheme = Schemes.GoogleScheme; options.DefaultAuthenticateScheme = Schemes.GoogleScheme;

View File

@ -11,7 +11,10 @@ namespace Core.Thalos.BuildingBlocks
public class GoogleAccessTokenAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, public class GoogleAccessTokenAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options,
ILoggerFactory logger, ILoggerFactory logger,
UrlEncoder encoder, UrlEncoder encoder,
IConfiguration config) : AuthenticationHandler<AuthenticationSchemeOptions>(options, logger, encoder) IConfiguration config,
GoogleAuthSettings googleSettings
) : AuthenticationHandler<AuthenticationSchemeOptions>(options, logger, encoder)
{ {
protected override async Task<AuthenticateResult> HandleAuthenticateAsync() protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{ {
@ -31,7 +34,7 @@ namespace Core.Thalos.BuildingBlocks
idToken, idToken,
new GoogleJsonWebSignature.ValidationSettings new GoogleJsonWebSignature.ValidationSettings
{ {
Audience = new[] { config["Authentication:Google:ClientId"]! } Audience = new[] { googleSettings.ClientId! }
}); });
} }
catch (InvalidJwtException) catch (InvalidJwtException)

View File

@ -4,12 +4,12 @@ using Microsoft.Extensions.Configuration;
namespace Core.Thalos.BuildingBlocks namespace Core.Thalos.BuildingBlocks
{ {
public class GoogleAuthHelper(IConfiguration config) : IGoogleAuthHelper public class GoogleAuthHelper(IConfiguration config, GoogleAuthSettings googleSettings) : IGoogleAuthHelper
{ {
public ClientSecrets GetClientSecrets() public ClientSecrets GetClientSecrets()
{ {
string clientId = config["Authentication:Google:ClientId"]!; string clientId = googleSettings.ClientId ?? string.Empty;
string clientSecret = config["Authentication:Google:ClientSecret"]!; string clientSecret = googleSettings.ClientSecret ?? string.Empty;
return new() { ClientId = clientId, ClientSecret = clientSecret }; return new() { ClientId = clientId, ClientSecret = clientSecret };
} }