This commit is contained in:
2026-10-10 16:23:41 +03:30
parent 5085fc54a4
commit bfd60e9bb3
2 changed files with 77 additions and 48 deletions
+34 -14
View File
@@ -204,7 +204,7 @@ namespace xIds.DI
{
//
source.AddXApiKeyConfiguration(configuration);
//
source.AddMemoryCache();
source.AddScoped<IXApplicationProvider, XApplicationProvider>();
@@ -407,33 +407,53 @@ namespace xIds.DI
)
{
//
// Adding Requirements ...
services.AddXIdentityResourceConfiguration(configuration);
//
// Create Authentication Builder ...
var authBuilder = services.AddAuthentication();
//
// For Best Support we Have to Add ApiKey Authentication First ...
if (addApiKeyAuthentication)
{
//
authBuilder
.AddScheme<AuthenticationSchemeOptions, XApiKeyAuthenticationHandler>(
XAuthenticationScheme.XApiKey.GetStringValue(),
options => { });
}
//
// Add JWT Bearer ...
// Add JwtBearer by Smart Schema ForwardDefaultSelector ...
authBuilder.AddJwtBearer(options =>
{
//
options.SaveToken = true;
options.RequireHttpsMetadata = false;
// options.ForwardDefault = XAuthentication.IDENTITY_SERVER_LOCAL_API;
//
options.ForwardDefault = XAuthentication.IDENTITY_SERVER_LOCAL_API;
// Selecting Authentication Schema Based On Header ...
options.ForwardDefaultSelector = context =>
{
//
// if Header Contains X-Api-Key use Scheme XApiKey ...
var apiKeyHeader = XHeader.ApiKey
.GetStringValue()
.ToNormalString();
if (context.Request.Headers.ContainsKey(apiKeyHeader))
{
return XAuthenticationScheme.XApiKey.GetStringValue();
}
//
// If Not, Use Local Api ...
return XAuthentication.IDENTITY_SERVER_LOCAL_API;
};
})
.AddLocalApi();
//
if (addApiKeyAuthentication)
{
//
authBuilder.AddScheme<AuthenticationSchemeOptions, XApiKeyAuthenticationHandler>(
XAuthenticationScheme.XApiKey.GetStringValue(),
options => {}
);
}
}
/// <summary>