Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
afedyanin committed Oct 23, 2023
1 parent 83a11aa commit 2479638
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 5 deletions.
4 changes: 1 addition & 3 deletions src/BlazorBff/AuthorizationRegistrar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,7 @@ private static Task OnTokenValidated(TokenValidatedContext context)
Console.WriteLine($"access token={accessToken}");
#endif

var resources = new string[] { "account", "blazor-client" };

roles.AddRange(JwtRolesHelper.ExtractRoles(accessToken, resources));
roles.AddRange(JwtRolesHelper.ExtractRoles(accessToken));

// Get reoles from DB if req
roles.AddRange(GetRolesByUserIdentity(context.Principal));
Expand Down
13 changes: 11 additions & 2 deletions src/BlazorBff/Helpers/JwtRolesHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,16 @@ public static class JwtRolesHelper

public static string[] ExtractRoles(
string? rawJwtAccessToken,
string[] resources,
bool includeRealmRoles = false)
{
var resources = Array.Empty<string>();
return ExtractRoles(rawJwtAccessToken, resources, includeRealmRoles);
}

public static string[] ExtractRoles(
string? rawJwtAccessToken,
string[] resources,
bool includeRealmRoles = false)
{
if (string.IsNullOrEmpty(rawJwtAccessToken))
{
Expand Down Expand Up @@ -67,8 +75,9 @@ private static string[] GetResourceAccessRoles(Claim? resourceAccessClaim, strin
}

var roles = new List<string>();
var resourceKeys = resourceNames.Any() ? resourceNames : resourceAccess.Keys;

foreach (var resource in resourceNames)
foreach (var resource in resourceKeys)
{
if (resourceAccess.TryGetValue(resource, out var resourceRolesDict))
{
Expand Down
22 changes: 22 additions & 0 deletions tests/BlazorBff.Tests/Helpers/JwtRolesHelperTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,31 @@ public void CanGetRolesWithSeveralResources()
var roles = JwtRolesHelper.ExtractRoles(_jwtRawString2, new string[] { "account", "blazor-client" });
Assert.That(roles, Is.Not.Null);
Assert.That(roles, Has.Length.EqualTo(5));
// account
Assert.That(roles, Has.Member("manage-account"));
Assert.That(roles, Has.Member("manage-account-links"));
Assert.That(roles, Has.Member("view-profile"));
// client
Assert.That(roles, Has.Member("role1"));
Assert.That(roles, Has.Member("role2"));
}

[Test]
public void CanGetRolesWithAllResources()
{
var roles = JwtRolesHelper.ExtractRoles(_jwtRawString2, true);
Assert.That(roles, Is.Not.Null);
Assert.That(roles, Has.Length.EqualTo(9));
// realm
Assert.That(roles, Has.Member("default-roles-myrealm"));
Assert.That(roles, Has.Member("offline_access"));
Assert.That(roles, Has.Member("uma_authorization"));
Assert.That(roles, Has.Member("myrole"));
// account
Assert.That(roles, Has.Member("manage-account"));
Assert.That(roles, Has.Member("manage-account-links"));
Assert.That(roles, Has.Member("view-profile"));
// client
Assert.That(roles, Has.Member("role1"));
Assert.That(roles, Has.Member("role2"));
}
Expand Down

0 comments on commit 2479638

Please sign in to comment.