Search code examples
angularpermissionsazure-active-directoryrolesazure-ad-msal

How do you read Roles/Permissions using MSAL-ANGULAR


So I've successfully integrated Azure AD authentication in my angular site as per the instructions in msal-angular and now I'm at the point where I'm looking to define and leverage roles and permissions to provide more granular control of what a user can and can't do.

From what I've been able to determine I can define roles by following this set of instructions (https://learn.microsoft.com/en-us/azure/architecture/multitenant-identity/app-roles) but msal-angular doesn't seem to expose this upon logging in - or at least I haven't found instructions on how to do this just yet.

Perhaps I'm missing something. Any suggestions would be appreciated


Solution

  • To get the groups a user belongs to, you will need to add directory.read.all to your scope in your Angular app and also in the API permissions in the Azure app settings.

    let graphUser = await graphClient.api('/me').get();
    let graphUserGroups = await graphClient.api(`/users/${graphUser.id}/memberOf`).get();
    
    let user = new User();
    user.id = graphUser.id;
    user.displayName = graphUser.displayName;
    // Prefer the mail property, but fall back to userPrincipalName
    user.email = graphUser.mail || graphUser.userPrincipalName;
    
    graphUserGroups.value.forEach(group => {
        user.groups.push({
            group_id: group.id,
            group_name: group.displayName
        });
    });