Search code examples
oauth-2.0azure-active-directorymicrosoft-graph-apiopenid-connectmicrosoft-identity-platform

Why can i use the short name with some permissions / scopes on microsoft identity platform AAD v 2?


When setting up my OAuth client app, i need to define scopes. I know of the built in scopes for things like open id connect such as openid profile email etc, and according to docs at https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#scopes-and-permissions

Identity platform supports several well-defined OpenID Connect scopes as well as resource-based permissions (each permission is indicated by appending the permission value to the resource's identifier or application ID URI). For example, the permission string https://graph.microsoft.com/Calendars.Read is used to request permission to read users calendars in Microsoft Graph.

but in practice i find that most docs (even that same doc later on) often use "short names" for graph scopes, like User.Read.All cf https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#admin-restricted-permissions:

Read all user's full profiles by using User.Read.All

What's going on here, are the MS apis special and have special short name aliases for their permissions/scopes? Is this doc'd anywhere to know?


Solution

  • The Microsoft Identity platform will assume that you were referring to Microsoft Graph if you omit the resource in the scope value. Thus, User.Read is treated as https://graph.microsoft.com/User.Read.