Skip to content

Commit ee526c2

Browse files
committed
Change authorization sheme to be specific in proxy... and we will see for eventual SingalR endpoints
1 parent 24c64be commit ee526c2

File tree

1 file changed

+46
-18
lines changed

1 file changed

+46
-18
lines changed

UbikLink.Proxy/Program.cs

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -88,24 +88,52 @@
8888

8989
//Authorization handlers
9090
builder.Services.AddScoped<IAuthorizationHandler, UserInfoOkHandler>();
91-
builder.Services.AddScoped<IAuthorizationHandler, UserRolesAuthorizationOkHandler>();
92-
93-
//Available policies (can be written in an extension)
94-
builder.Services.AddAuthorizationBuilder()
95-
.AddPolicy("IsUser", policy =>
96-
policy.Requirements.Add(new UserInfoOnlyRequirement(RoleRequirement.User)))
97-
.AddPolicy("IsMegaAdmin", policy =>
98-
policy.Requirements.Add(new UserInfoOnlyRequirement(RoleRequirement.MegaAdmin)))
99-
.AddPolicy("IsSubOwner", policy =>
100-
policy.Requirements.Add(new UserInfoOnlyRequirement(RoleRequirement.SubscriptionOwner)))
101-
.AddPolicy("CanReadTenant", policy =>
102-
policy.Requirements.Add(new UserTenantRolesOrAuthorizationsRequirement(["tenant:read"], PermissionMode.Authorization, true)))
103-
.AddPolicy("CanReadTenantAndReadUser", policy =>
104-
policy.Requirements.Add(new UserTenantRolesOrAuthorizationsRequirement(["tenant:read", "user:read"], PermissionMode.Authorization, true)))
105-
.AddPolicy("CanReadTenantAndWriteUserRole", policy =>
106-
policy.Requirements.Add(new UserTenantRolesOrAuthorizationsRequirement(["tenant:read", "user:read", "tenant-user-role:write"], PermissionMode.Authorization, true)))
107-
.AddPolicy("CanReadTenantAndReadTenantRoles", policy =>
108-
policy.Requirements.Add(new UserTenantRolesOrAuthorizationsRequirement(["tenant:read", "tenant-role:read"], PermissionMode.Authorization, true)));
91+
builder.Services.AddScoped<IAuthorizationHandler, UserRolesAuthorizationOkHandler>();
92+
93+
//Available policies (can be written in an extension)
94+
builder.Services.AddAuthorizationBuilder()
95+
.AddPolicy("IsUser", policy =>
96+
{
97+
policy.Requirements.Add(new UserInfoOnlyRequirement(RoleRequirement.User));
98+
policy.RequireAuthenticatedUser();
99+
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
100+
})
101+
.AddPolicy("IsMegaAdmin", policy =>
102+
{
103+
policy.Requirements.Add(new UserInfoOnlyRequirement(RoleRequirement.MegaAdmin));
104+
policy.RequireAuthenticatedUser();
105+
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
106+
})
107+
.AddPolicy("IsSubOwner", policy =>
108+
{
109+
policy.Requirements.Add(new UserInfoOnlyRequirement(RoleRequirement.SubscriptionOwner));
110+
policy.RequireAuthenticatedUser();
111+
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
112+
})
113+
.AddPolicy("CanReadTenant", policy =>
114+
{
115+
policy.Requirements.Add(new UserTenantRolesOrAuthorizationsRequirement(new[] { "tenant:read" }, PermissionMode.Authorization, true));
116+
policy.RequireAuthenticatedUser();
117+
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
118+
})
119+
.AddPolicy("CanReadTenantAndReadUser", policy =>
120+
{
121+
policy.Requirements.Add(new UserTenantRolesOrAuthorizationsRequirement(new[] { "tenant:read", "user:read" }, PermissionMode.Authorization, true));
122+
policy.RequireAuthenticatedUser();
123+
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
124+
})
125+
.AddPolicy("CanReadTenantAndWriteUserRole", policy =>
126+
{
127+
policy.Requirements.Add(new UserTenantRolesOrAuthorizationsRequirement(new[] { "tenant:read", "user:read", "tenant-user-role:write" }, PermissionMode.Authorization, true));
128+
policy.RequireAuthenticatedUser();
129+
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
130+
})
131+
.AddPolicy("CanReadTenantAndReadTenantRoles", policy =>
132+
{
133+
policy.Requirements.Add(new UserTenantRolesOrAuthorizationsRequirement(new[] { "tenant:read", "tenant-role:read" }, PermissionMode.Authorization, true));
134+
policy.RequireAuthenticatedUser();
135+
policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
136+
});
109137

110138

111139
//Proxy

0 commit comments

Comments
 (0)