I have application hosted on Azure, Angular 4 on front and .net core 2.0 on back-end. What I want to achieve is: To add Roles to my users who are added to my Azure Active Directory. Authentication is implemented and works well. I use ADAL and I send my bearer token with every request.
These are my app roles defined in the manifest on azure portal:
"appRoles": [ { "allowedMemberTypes": [ "User" ], "displayName": "Reviewer", "id": "0238c2bb-9857-4d07-b760-a47ec621d57a", "isEnabled": true, "description": "Reviewer only have the ability to view tasks and their statuses.", "value": "Reviewer" }, { "allowedMemberTypes": [ "User" ], "displayName": "Approver", "id": "000018cb-19e3-4f89-bf99-5d7acf30773b", "isEnabled": true, "description": "Approvers have the ability to change the status of tasks.", "value": "Approver" }
]
Approver role is assigned to the desired user.
I send request to the back-end (.net core 2.0 web api) where I have [Authorize] attribute and I check the user claims User.Claims.ToList() then I recieve that the user is approver:
[15]{http://schemas.microsoft.com/ws/2008/06/identity/claims/role: Approver}
And that's great!
Now I add policy in startup.cs
services.AddAuthorization(options => { options.AddPolicy("ElevatedRights", policy => policy.RequireRole("Approver")); });
Then this is the step where the problem happens. I add the following code in the controller (see step 3). I change the [Authorize] method with
[Authorize(Policy = "ElevatedRights")]
but I got rejected then. I even tried with[Authorize(Roles = "Approver")]
What do I miss or do wrong?
P.S. Feel free to suggest better title for the question.
RoleClaimsType
on yourAddJwtBearer
call? Something like:AddJwtBearer(o => o.TokenValidationParameters = new TokenValidationParameters { RoleClaimType = ClaimTypes.Role })
. Instead ofClaimTypes.Role
, you can also try"roles"
. – juunasRequireClaim(ClaimTypes.Role, "Approver")
. – juunas