App Needs Microsoft Graph Access? Configure API Permissions

Published on:

An app needs to call Microsoft Graph.

It might need to list group membership for the signed-in user or run background directory automation.

The Microsoft Entra pattern is:

Open app registration -> add Microsoft Graph permission -> choose delegated or application permission -> grant consent when required -> request token -> call Graph

This trip focuses on Microsoft Graph permissions.

It is different from exposing your own API scope.

Here, Microsoft Graph is the resource API.

Your app is the client that asks Entra for access to Graph.

Delegated vs Application Permissions

Microsoft Graph permissions come in two main types.

Delegated permissions

Use them when:

  • a user is signed in
  • the app acts on behalf of that user
  • Graph access should be limited by the user’s own permissions
  • tokens contain the scp claim

Example:

GroupMember.Read.All

Application permissions

Use them when:

  • no user is present
  • a background app or daemon calls Graph
  • the app acts as itself
  • tokens contain the roles claim
  • admin consent is normally required

Example:

User.Read.All

Choose the least privileged permission that supports the scenario.

Open the App Registration

Go to:

Entra ID > App registrations

Create or open the application that needs Microsoft Graph access.

Example:

CloudTrips-Graph-App

This app registration is the client application that will request a Graph access token.

Microsoft Entra App registrations page showing the CloudTrips Graph app

Open API Permissions

Inside the app registration, open:

API permissions

This page shows the APIs and permissions already configured for the app.

Select:

Add a permission

CloudTrips Graph app API permissions page showing Add a permission

Choose Microsoft Graph

On the request API permissions page, choose:

Microsoft APIs > Microsoft Graph

Microsoft Graph is the API surface for Microsoft 365 and Entra directory data.

Request API permissions page showing Microsoft Graph selected

Choose Permission Type

Choose the permission type that matches the runtime scenario.

For a user-facing app:

Delegated permissions

For a background app:

Application permissions

Do not choose application permissions only because they look more powerful.

They often grant tenant-wide access and usually require admin consent.

Microsoft Graph permissions page showing Delegated permissions and Application permissions choices

Add a Delegated Permission

For a simple signed-in user scenario, choose:

Delegated permissions > GroupMember.Read.All

This allows the app to read group memberships on behalf of the signed-in user.

The access token later contains:

scp=GroupMember.Read.All

Microsoft Graph delegated permissions search showing GroupMember.Read.All selected

Add an Application Permission

For an automation scenario, choose an application permission only if the app really needs app-only access.

Example:

Application permissions > User.Read.All

This allows the app to read user profiles without a signed-in user, after admin consent.

The access token later contains a Graph role claim such as:

roles=["User.Read.All"]

Microsoft Graph application permissions search showing User.Read.All selected

After adding permissions, return to:

API permissions

Some permissions need admin approval before the app can use them.

Select:

Grant admin consent

After consent is granted, the status should show that consent was granted for the tenant.

API permissions page showing Microsoft Graph permissions and Grant admin consent

Confirm Token Claims

Request a token for Microsoft Graph.

For delegated permissions, the token should contain:

{
  "aud": "https://graph.microsoft.com",
  "scp": "GroupMember.Read.All"
}

For application permissions, the token should contain:

{
  "aud": "https://graph.microsoft.com",
  "roles": [
    "User.Read.All"
  ]
}

This proves the app received a token for Graph with the configured permission.

Decoded Microsoft Graph access token showing aud and scp or roles claims

Enterprise Note

Microsoft Graph permissions can expose sensitive tenant data.

Recommended checklist:

  • choose delegated permissions when a user context is required
  • choose application permissions only for app-only automation
  • use the least privileged Graph permission
  • document why each permission is needed
  • grant admin consent intentionally
  • periodically review app permissions and consent
  • remove unused permissions
  • monitor audit logs for consent and app permission changes