Add migration to update ApiClients with centralized authorization scopes

This migration updates the ScopesJson for the ApiClient with Id 91000000-0000-0000-0000-000000000001 to include additional authorization scopes for improved API access control. The Down method reverts the changes if necessary.
This commit is contained in:
Torsten Brendgen
2026-07-09 23:49:01 +02:00
parent dc93ea0813
commit dfd9c16f61
27 changed files with 5617 additions and 34 deletions

View File

@@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Authentication.Negotiate;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Tokens;
using Microsoft.SelfService.Portal.Core.API.Authorization;
using Microsoft.SelfService.Portal.Core.API.Context;
using Microsoft.SelfService.Portal.Core.API.Interfaces;
using Microsoft.SelfService.Portal.Core.API.Repository;
@@ -109,20 +110,7 @@ builder.Services.AddAuthentication(options =>
builder.Services.AddHttpContextAccessor();
builder.Services.AddAuthorization(options =>
{
// By default, all incoming requests will be authorized according to the default policy.
options.FallbackPolicy = options.DefaultPolicy;
options.AddPolicy("QueueProcess", policy => policy.RequireClaim("scope", "queue.process"));
options.AddPolicy("DeploymentRead", policy => policy.RequireClaim("scope", "deployment.read"));
options.AddPolicy("CredentialResolve", policy => policy.RequireClaim("scope", "credential.resolve"));
options.AddPolicy("TokenManage", policy => policy.RequireAssertion(context =>
context.User.HasClaim("scope", "token.manage")
|| context.User.Identity?.AuthenticationType == NegotiateDefaults.AuthenticationScheme));
options.AddPolicy("TokenAdmin", policy => policy.RequireAssertion(context =>
context.User.HasClaim("scope", "token.admin")
|| context.User.Identity?.AuthenticationType == NegotiateDefaults.AuthenticationScheme));
});
builder.Services.AddSelfServicePortalAuthorization();
var app = builder.Build();
var frontendDistPath = Path.GetFullPath(Path.Combine(