feat(ClaimExtensions): Ermöglicht die Bereitstellung von Methoden zum Abrufen spezifischer Ansprüche.
This commit is contained in:
parent
a1f996b328
commit
47aeb49a40
@ -29,7 +29,7 @@ namespace DigitalData.Auth.API.Config
|
|||||||
descriptor = null;
|
descriptor = null;
|
||||||
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
|
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
|
||||||
if (!AuthApiParams.Consumers.TryGetByRoute(consumerRoute, out var consumer)
|
if (!AuthApiParams.Consumers.TryGetByRoute(consumerRoute, out var consumer)
|
||||||
|| descriptors.TryGet(AuthApiParams.Issuer, consumer.Audience, out var _descriptor))
|
|| !descriptors.TryGet(AuthApiParams.Issuer, consumer.Audience, out var _descriptor))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
descriptor = _descriptor;
|
descriptor = _descriptor;
|
||||||
|
|||||||
17
src/DigitalData.Auth.API/Controllers/ClaimExtensions.cs
Normal file
17
src/DigitalData.Auth.API/Controllers/ClaimExtensions.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System.Security.Claims;
|
||||||
|
|
||||||
|
namespace DigitalData.Auth.API.Controllers
|
||||||
|
{
|
||||||
|
public static class ClaimExtensions
|
||||||
|
{
|
||||||
|
public static string? GetName(this ClaimsPrincipal user) => user.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||||
|
|
||||||
|
public static bool TryGetName(this ClaimsPrincipal user, out string name)
|
||||||
|
{
|
||||||
|
#pragma warning disable CS8601 // Possible null reference assignment.
|
||||||
|
name = user.GetName();
|
||||||
|
#pragma warning restore CS8601 // Possible null reference assignment.
|
||||||
|
return name is not null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,13 +6,10 @@ using DigitalData.Core.Application;
|
|||||||
using DigitalData.Core.Security;
|
using DigitalData.Core.Security;
|
||||||
using DigitalData.UserManager.Application;
|
using DigitalData.UserManager.Application;
|
||||||
using DigitalData.UserManager.Application.DTOs.User;
|
using DigitalData.UserManager.Application.DTOs.User;
|
||||||
using DigitalData.UserManager.Application.Services;
|
|
||||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||||
using Microsoft.IdentityModel.JsonWebTokens;
|
using Microsoft.IdentityModel.JsonWebTokens;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
using Microsoft.OpenApi.Models;
|
using Microsoft.OpenApi.Models;
|
||||||
using System.Security.Claims;
|
|
||||||
using static System.Net.Mime.MediaTypeNames;
|
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
@ -24,7 +21,7 @@ var apiParams = config.Get<AuthApiParams>() ?? throw new InvalidOperationExcepti
|
|||||||
|
|
||||||
// Add services to the container.
|
// Add services to the container.
|
||||||
builder.Services.Configure<AuthApiParams>(config);
|
builder.Services.Configure<AuthApiParams>(config);
|
||||||
builder.Services.AddConsumerApiServiceFromConfiguration(config);
|
builder.Services.AddConsumerApiService(config);
|
||||||
builder.Services.AddCryptoFactory(config.GetSection("CryptParams"));
|
builder.Services.AddCryptoFactory(config.GetSection("CryptParams"));
|
||||||
builder.Services.AddJwtSignatureHandler<ConsumerApi>(api => new Dictionary<string, object>
|
builder.Services.AddJwtSignatureHandler<ConsumerApi>(api => new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
@ -96,9 +93,7 @@ builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
|||||||
ValidateAudience = true,
|
ValidateAudience = true,
|
||||||
ValidAudience = apiParams!.DefaultConsumer.Audience,
|
ValidAudience = apiParams!.DefaultConsumer.Audience,
|
||||||
ValidateLifetime = true,
|
ValidateLifetime = true,
|
||||||
IssuerSigningKey = issuerSigningKeyInitiator?.Value,
|
IssuerSigningKey = issuerSigningKeyInitiator?.Value
|
||||||
NameClaimType = JwtRegisteredClaimNames.Name,
|
|
||||||
RoleClaimType = ClaimTypes.Role
|
|
||||||
};
|
};
|
||||||
|
|
||||||
options.Events = new JwtBearerEvents
|
options.Events = new JwtBearerEvents
|
||||||
|
|||||||
@ -6,7 +6,7 @@ namespace DigitalData.Auth.API.Services
|
|||||||
{
|
{
|
||||||
public static class DIExtensions
|
public static class DIExtensions
|
||||||
{
|
{
|
||||||
public static IServiceCollection AddConsumerApiServiceFromConfiguration(this IServiceCollection services, IConfiguration configuration, string key = "ConsumerAPIs")
|
public static IServiceCollection AddConsumerApiService(this IServiceCollection services, IConfiguration configuration, string key = "ConsumerAPIs")
|
||||||
{
|
{
|
||||||
var consumerApis = configuration.GetSection(key).Get<IEnumerable<ConsumerApi>>() ?? throw new InvalidOperationException($"No Consumer list found in {key} in configuration.");
|
var consumerApis = configuration.GetSection(key).Get<IEnumerable<ConsumerApi>>() ?? throw new InvalidOperationException($"No Consumer list found in {key} in configuration.");
|
||||||
services.AddSingleton(Options.Create(consumerApis));
|
services.AddSingleton(Options.Create(consumerApis));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user