From 69f238f5b1ff1cbef39e38522b8a2f54edae3fba Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Fri, 9 Oct 2026 23:17:27 +0330 Subject: [PATCH] last ... --- Constants/XAuthorization.cs | 11 ++++++----- Extensions/DIExtensions.cs | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/Constants/XAuthorization.cs b/Constants/XAuthorization.cs index e064168..da085b4 100644 --- a/Constants/XAuthorization.cs +++ b/Constants/XAuthorization.cs @@ -1,13 +1,14 @@ namespace xCommons.Constants { public partial struct XAuthorization { - public const string TokenIdentifier = "Bearer "; + public const string XApiKey = "X-Api-Key"; public const string Header = "Authorization"; + public const string ExpiresAt = "expires_at"; + public const string XPoweredBy = "X-PoweredBy"; + public const string TokenIdentifier = "Bearer "; public const string AccessToken = "access_token"; public const string RefreshToken = "refresh_token"; - public const string ExpiresAt = "expires_at"; - public const string AccessTokenExpired = "AccessToken-Expired"; - public const string RevisionChecksum = "revision_checksum"; - public const string XPoweredBy = "X-PoweredBy"; public const int ThresholdBeforeTokenExpiration = 600; + public const string RevisionChecksum = "revision_checksum"; + public const string AccessTokenExpired = "AccessToken-Expired"; } } \ No newline at end of file diff --git a/Extensions/DIExtensions.cs b/Extensions/DIExtensions.cs index 5b637c9..836ed9b 100644 --- a/Extensions/DIExtensions.cs +++ b/Extensions/DIExtensions.cs @@ -94,12 +94,14 @@ namespace xCommons.Extensions /// /// /// + /// /// public static void AddXSwaggerGenOptions( this SwaggerGenOptions source, string xmlFilePath = null, bool addRequiredXPoweredFilter = true, bool addXTokenAuthorization = true, + bool addXApiKeyAuthorization = true, bool addDefaultValueFilter = true ) { @@ -210,6 +212,32 @@ namespace xCommons.Extensions }); #endregion } + + // + // Handle XApiKey Authorization ... + if (addXApiKeyAuthorization) + { + // + source.AddSecurityDefinition(nameof(XAuthorization.XApiKey), new OpenApiSecurityScheme + { + In = ParameterLocation.Header, + Name = XAuthorization.XApiKey, + Type = SecuritySchemeType.ApiKey, + Description = "Api Key for Authentication ...", + }); + + // + source.AddSecurityRequirement(new OpenApiSecurityRequirement { + { + new OpenApiSecurityScheme { + Reference = new OpenApiReference { + Id = nameof (XAuthorization.XApiKey), + Type = ReferenceType.SecurityScheme + } + }, Array.Empty () + } + }); + } } /// @@ -221,6 +249,7 @@ namespace xCommons.Extensions /// /// /// + /// /// public static void AddXSwagger( this IServiceCollection source, @@ -229,6 +258,7 @@ namespace xCommons.Extensions string xmlFilePath = null, bool addRequiredXPoweredFilter = true, bool addXTokenAuthorization = true, + bool addXApiKeyAuthorization = true, bool addDefaultValueFilter = true ) { @@ -252,6 +282,7 @@ namespace xCommons.Extensions xmlFilePath: xmlFilePath, addDefaultValueFilter: addDefaultValueFilter, addXTokenAuthorization: addXTokenAuthorization, + addXApiKeyAuthorization: addXApiKeyAuthorization, addRequiredXPoweredFilter: addRequiredXPoweredFilter ); #endregion