A cloud-based identity and access management service for securing user authentication and resource access
Hello @Neville, Eric,
I understand the confusion you have about delegated API permissions in Microsoft Entra ID application.
Note: Even though the app has the delegated permission to access certain resources (e.g., DeviceManagementServiceConfig.ReadWrite.All for Intune), the app can only access those resources if the signed-in user has the correct permissions.
- If the user doesn't have the necessary role or permissions (e.g., Intune admin role), they cannot access those Intune objects, and the API will return an unauthorized error (403 Forbidden).
To test the same, I granted DeviceManagementServiceConfig.ReadWrite.All API permission to the Microsoft Entra ID application:

Generated access token with the user with no Admin role:
GET https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
client_id: ClientID
grant_type: authorization_code
scope: DeviceManagementServiceConfig.ReadWrite.All
redirect_uri: RedirectURL
code: Code
client_secret: Secret

When I tried to call the List windowsAutopilotDeviceIdentities API, I got 401 Unauthorized error:
GET https://graph.microsoft.com/v1.0/deviceManagement/windowsAutopilotDeviceIdentities

Now, I tried to generate the access token with the user having Admin role the API call is successful:
Got empty response as there are no identities in my environment

Hence, If the authenticated user does not have sufficient individual privileges, even though the app has been granted admin consent for the delegated permission, the request will fail with a 403 Unauthorized.
- Delegated Permissions means the app is acting on behalf of a user, and can do only what that user can do, unless explicitly elevated by roles (like being an Intune Admin).
- Even after a global admin consents to the permission in Entra ID, this only means “This app is allowed to ask for this scope when a user logs in.”
- It does not grant the app or the user any additional backend access beyond what the user already has. It just means the scope is available for the access token.
Hope this helps!
If this answer was helpful, please click "Accept the answer" and mark Yes, as this can help other community members.
If you have any other questions or are still experiencing issues, feel free to ask in the "comments" section, and I'd be happy to help.