Reogranised API and Security assets

This commit is contained in:
2026-08-30 15:08:58 +02:00
parent c204cbb1c2
commit 4827cb5795
57 changed files with 88 additions and 89 deletions
@@ -0,0 +1,7 @@
namespace PostFundManagement.Domain.Security;
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public sealed class ApiVersionTargetAttribute(int majorVersion) : Attribute
{
public int MajorVersion { get; } = majorVersion;
}
@@ -0,0 +1,12 @@
namespace PostFundManagement.Domain.Security.Configuration;
public sealed class MachineIdentity
{
public string? Authority { get; set; }
public string? Audience { get; set; }
public string? ClientId { get; set; }
public string? ClientSecret { get; set; }
}
@@ -0,0 +1,14 @@
namespace PostFundManagement.Domain.Security.Configuration;
public sealed class SecurityClientSettings
{
public string? Authority { get; set; }
public string? GrantType { get; set; }
public string? ClientId { get; set; }
public string? ClientSecret { get; set; }
public string? Scope { get; set; }
}
@@ -0,0 +1,12 @@
namespace PostFundManagement.Domain.Security.Configuration;
public sealed class SecuritySettings
{
public string? Authority { get; set; }
public string? ClientId { get; set; }
public string? ClientSecret { get; set; }
public string? Audience { get; set; }
}
@@ -0,0 +1,13 @@
namespace PostFundManagement.Domain.Security.Models;
public sealed class TokenErrorResponse
{
[JsonPropertyName("error")]
public string? Error { get; set; }
[JsonPropertyName("error_description")]
public string? ErrorDescription { get; set; }
[JsonPropertyName("error_uri")]
public string? ErrorUri { get; set; }
}
@@ -0,0 +1,20 @@
namespace PostFundManagement.Domain.Security.Models;
public sealed class TokenRequest
{
[JsonPropertyName("grant_type")]
[AliasAs("grant_type")]
public string? GrantType { get; set; }
[JsonPropertyName("client_id")]
[AliasAs("client_id")]
public string? ClientId { get; set; }
[JsonPropertyName("client_secret")]
[AliasAs("client_secret")]
public string? ClientSecret { get; set; }
[JsonPropertyName("scope")]
[AliasAs("scope")]
public string? Scope { get; set; }
}
@@ -0,0 +1,16 @@
namespace PostFundManagement.Domain.Security.Models;
public sealed class TokenResponse
{
[JsonPropertyName("access_token")]
public string? AccessToken { get; set; }
[JsonPropertyName("expires_in")]
public int ExpiresIn { get; set; }
[JsonPropertyName("token_type")]
public string? TokenType { get; set; }
[JsonPropertyName("scope")]
public string? Scope { get; set; }
}
@@ -0,0 +1,16 @@
namespace PostFundManagement.Domain.Security;
public sealed class OpenApiBearerSecuritySchemeTransformer : IOpenApiDocumentTransformer
{
public async Task TransformAsync(OpenApiDocument document, OpenApiDocumentTransformerContext context, CancellationToken cancellationToken)
{
var bearerScheme = new OpenApiSecurityScheme
{
Type = SecuritySchemeType.Http,
Scheme = "bearer",
Description = "JWT Authorization header using the Bearer scheme",
};
document.AddComponent("Bearer", bearerScheme);
}
}
@@ -0,0 +1,7 @@
namespace PostFundManagement.Domain.Security.Sdk;
public interface ISecurityConnectApi
{
[Post("/connect/token")]
ValueTask<HttpResponseMessage> GetToken([Body(BodySerializationMethod.UrlEncoded)] Models.TokenRequest request, CancellationToken cancellationToken = default);
}