diff --git a/src/apps/Altinn.AccessManagement/src/Altinn.AccessManagement/AccessManagementHost.cs b/src/apps/Altinn.AccessManagement/src/Altinn.AccessManagement/AccessManagementHost.cs index e909ef4f4..6b82bd075 100644 --- a/src/apps/Altinn.AccessManagement/src/Altinn.AccessManagement/AccessManagementHost.cs +++ b/src/apps/Altinn.AccessManagement/src/Altinn.AccessManagement/AccessManagementHost.cs @@ -1,4 +1,4 @@ -using Altinn.AccessManagement.Api.Enduser; +using Altinn.AccessManagement.Api.Enduser; using Altinn.AccessManagement.Api.Enduser.Authorization.AuthorizationHandler; using Altinn.AccessManagement.Api.Enduser.Authorization.AuthorizationRequirement; using Altinn.AccessManagement.Api.Internal; @@ -32,6 +32,7 @@ using AltinnCore.Authentication.JwtCookie; using Azure.Monitor.OpenTelemetry.AspNetCore; using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.DependencyInjection; using Microsoft.FeatureManagement; using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; @@ -297,27 +298,27 @@ private static void ConfigureAuthorization(this WebApplicationBuilder builder) .AddPolicy(AuthzConstants.INTERNAL_AUTHORIZATION, policy => policy.Requirements.Add(new ClaimAccessRequirement("urn:altinn:app", "internal.authorization"))) .AddPolicy(AuthzConstants.POLICY_MASKINPORTEN_DELEGATION_READ, policy => policy.Requirements.Add(new ResourceAccessRequirement("read", "altinn_maskinporten_scope_delegation"))) .AddPolicy(AuthzConstants.POLICY_MASKINPORTEN_DELEGATION_WRITE, policy => policy.Requirements.Add(new ResourceAccessRequirement("write", "altinn_maskinporten_scope_delegation"))) - .AddPolicy(AuthzConstants.POLICY_MASKINPORTEN_DELEGATIONS_PROXY, policy => policy.Requirements.Add(new ScopeAccessRequirement(["altinn:maskinporten/delegations", "altinn:maskinporten/delegations.admin"]))) - .AddPolicy(AuthzConstants.POLICY_MASKINPORTEN_CONSENT_READ, policy => policy.Requirements.Add(new ScopeAccessRequirement(["altinn:maskinporten/consent.read"]))) + .AddPolicy(AuthzConstants.POLICY_MASKINPORTEN_DELEGATIONS_PROXY, policy => policy.RequireAnyScopeOf("altinn:maskinporten/delegations", "altinn:maskinporten/delegations.admin")) + .AddPolicy(AuthzConstants.POLICY_MASKINPORTEN_CONSENT_READ, policy => policy.RequireAnyScopeOf("altinn:maskinporten/consent.read")) .AddPolicy(AuthzConstants.POLICY_ACCESS_MANAGEMENT_READ, policy => policy.Requirements.Add(new ResourceAccessRequirement("read", "altinn_access_management"))) .AddPolicy(AuthzConstants.POLICY_ACCESS_MANAGEMENT_WRITE, policy => policy.Requirements.Add(new ResourceAccessRequirement("write", "altinn_access_management"))) .AddPolicy(AuthzConstants.POLICY_ACCESS_MANAGEMENT_ENDUSER_READ, policy => policy.Requirements.Add(new EndUserResourceAccessRequirement("read", "altinn_access_management", false))) .AddPolicy(AuthzConstants.POLICY_ACCESS_MANAGEMENT_ENDUSER_WRITE, policy => policy.Requirements.Add(new EndUserResourceAccessRequirement("write", "altinn_access_management", false))) .AddPolicy(AuthzConstants.POLICY_ACCESS_MANAGEMENT_ENDUSER_READ_WITH_PASS_TROUGH, policy => policy.Requirements.Add(new EndUserResourceAccessRequirement("read", "altinn_access_management", true))) - .AddPolicy(AuthzConstants.POLICY_RESOURCEOWNER_AUTHORIZEDPARTIES, policy => policy.Requirements.Add(new ScopeAccessRequirement([AuthzConstants.SCOPE_AUTHORIZEDPARTIES_RESOURCEOWNER, AuthzConstants.SCOPE_AUTHORIZEDPARTIES_ADMIN]))) - .AddPolicy(AuthzConstants.POLICY_CONSENTREQUEST_WRITE, policy => policy.Requirements.Add(new ScopeAccessRequirement([AuthzConstants.SCOPE_CONSENTREQUEST_ORG, AuthzConstants.SCOPE_CONSENTREQUEST_WRITE]))) - .AddPolicy(AuthzConstants.POLICY_CONSENTREQUEST_READ, policy => policy.Requirements.Add(new ScopeAccessRequirement([AuthzConstants.SCOPE_CONSENTREQUEST_ORG, AuthzConstants.SCOPE_CONSENTREQUEST_READ, AuthzConstants.SCOPE_CONSENTREQUEST_WRITE]))) + .AddPolicy(AuthzConstants.POLICY_RESOURCEOWNER_AUTHORIZEDPARTIES, policy => policy.RequireAnyScopeOf(AuthzConstants.SCOPE_AUTHORIZEDPARTIES_RESOURCEOWNER, AuthzConstants.SCOPE_AUTHORIZEDPARTIES_ADMIN)) + .AddPolicy(AuthzConstants.POLICY_CONSENTREQUEST_WRITE, policy => policy.RequireAnyScopeOf(AuthzConstants.SCOPE_CONSENTREQUEST_ORG, AuthzConstants.SCOPE_CONSENTREQUEST_WRITE)) + .AddPolicy(AuthzConstants.POLICY_CONSENTREQUEST_READ, policy => policy.RequireAnyScopeOf(AuthzConstants.SCOPE_CONSENTREQUEST_ORG, AuthzConstants.SCOPE_CONSENTREQUEST_READ, AuthzConstants.SCOPE_CONSENTREQUEST_WRITE)) .AddPolicy(AuthzConstants.POLICY_CLIENTDELEGATION_READ, policy => policy.Requirements.Add(new EndUserResourceAccessRequirement("read", "altinn_client_administration"))) .AddPolicy(AuthzConstants.POLICY_CLIENTDELEGATION_WRITE, policy => policy.Requirements.Add(new EndUserResourceAccessRequirement("write", "altinn_client_administration"))) - .AddPolicy(AuthzConstants.SCOPE_ENDUSER_CLIENTDELEGATION_READ, policy => policy.Requirements.Add(new ScopeAccessRequirement([AuthzConstants.SCOPE_PORTAL_ENDUSER, AuthzConstants.SCOPE_ENDUSER_CLIENTDELEGATION_READ]))) - .AddPolicy(AuthzConstants.SCOPE_ENDUSER_CLIENTDELEGATION_WRITE, policy => policy.Requirements.Add(new ScopeAccessRequirement([AuthzConstants.SCOPE_PORTAL_ENDUSER, AuthzConstants.SCOPE_ENDUSER_CLIENTDELEGATION_WRITE]))) - .AddPolicy(AuthzConstants.SCOPE_PORTAL_ENDUSER, policy => policy.Requirements.Add(new ScopeAccessRequirement([AuthzConstants.SCOPE_PORTAL_ENDUSER]))); + .AddPolicy(AuthzConstants.SCOPE_ENDUSER_CLIENTDELEGATION_READ, policy => policy.RequireAnyScopeOf(AuthzConstants.SCOPE_PORTAL_ENDUSER, AuthzConstants.SCOPE_ENDUSER_CLIENTDELEGATION_READ)) + .AddPolicy(AuthzConstants.SCOPE_ENDUSER_CLIENTDELEGATION_WRITE, policy => policy.RequireAnyScopeOf(AuthzConstants.SCOPE_PORTAL_ENDUSER, AuthzConstants.SCOPE_ENDUSER_CLIENTDELEGATION_WRITE)) + .AddPolicy(AuthzConstants.SCOPE_PORTAL_ENDUSER, policy => policy.RequireAnyScopeOf(AuthzConstants.SCOPE_PORTAL_ENDUSER)); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); - builder.Services.AddScoped(); + builder.Services.AddAltinnScopesAuthorizationHandlers(); } private static void ConfigurePostgreSqlConfiguration(this WebApplicationBuilder builder) diff --git a/src/apps/Altinn.AccessManagement/src/Altinn.AccessManagement/Altinn.AccessManagement.csproj b/src/apps/Altinn.AccessManagement/src/Altinn.AccessManagement/Altinn.AccessManagement.csproj index 98f2bf3a4..1389a5b8e 100644 --- a/src/apps/Altinn.AccessManagement/src/Altinn.AccessManagement/Altinn.AccessManagement.csproj +++ b/src/apps/Altinn.AccessManagement/src/Altinn.AccessManagement/Altinn.AccessManagement.csproj @@ -35,6 +35,7 @@ + diff --git a/src/apps/Altinn.Authorization/src/Altinn.Authorization/Altinn.Authorization.csproj b/src/apps/Altinn.Authorization/src/Altinn.Authorization/Altinn.Authorization.csproj index 79ac6ded0..5fd79873e 100644 --- a/src/apps/Altinn.Authorization/src/Altinn.Authorization/Altinn.Authorization.csproj +++ b/src/apps/Altinn.Authorization/src/Altinn.Authorization/Altinn.Authorization.csproj @@ -41,6 +41,7 @@ + diff --git a/src/apps/Altinn.Authorization/src/Altinn.Authorization/Program.cs b/src/apps/Altinn.Authorization/src/Altinn.Authorization/Program.cs index 54e3bcf18..1b7a79829 100644 --- a/src/apps/Altinn.Authorization/src/Altinn.Authorization/Program.cs +++ b/src/apps/Altinn.Authorization/src/Altinn.Authorization/Program.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using Altinn.ApiClients.Maskinporten.Extensions; using Altinn.ApiClients.Maskinporten.Services; using Altinn.Authorization.Services.Implementation; @@ -33,6 +33,7 @@ using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Server.Kestrel.Core; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.FeatureManagement; using Microsoft.IdentityModel.Logging; @@ -260,11 +261,11 @@ void ConfigureServices(IServiceCollection services, IConfiguration config) options.AddPolicy(AuthzConstants.ALTINNII_AUTHORIZATION, policy => policy.Requirements.Add(new ClaimAccessRequirement("urn:altinn:app", "sbl.authorization"))); options.AddPolicy(AuthzConstants.POLICY_PLATFORMISSUER_ACCESSTOKEN, policy => policy.Requirements.Add(new AccessTokenRequirement(AuthzConstants.PLATFORM_ACCESSTOKEN_ISSUER))); options.AddPolicy(AuthzConstants.DELEGATIONEVENT_FUNCTION_AUTHORIZATION, policy => policy.Requirements.Add(new ClaimAccessRequirement("urn:altinn:app", "platform.authorization"))); - options.AddPolicy(AuthzConstants.AUTHORIZESCOPEACCESS, policy => policy.Requirements.Add(new ScopeAccessRequirement([AuthzConstants.AUTHORIZE_SCOPE, AuthzConstants.AUTHORIZE_ADMIN_SCOPE]))); + options.AddPolicy(AuthzConstants.AUTHORIZESCOPEACCESS, policy => policy.RequireAnyScopeOf(AuthzConstants.AUTHORIZE_SCOPE, AuthzConstants.AUTHORIZE_ADMIN_SCOPE)); }); + services.AddAltinnScopesAuthorizationHandlers(); services.AddTransient(); - services.AddTransient(); services.AddSingleton(); services.AddPlatformAccessTokenSupport(config, builder.Environment.IsDevelopment());