Hi mmchaabani,
You're on the right track with multi-tenant setup and admin consent. Since the app appears in Enterprise Applications after the admin accepted the consent screen, it means the service principal was successfully created in your client’s tenant. However, the issue your users are facing ("admin approval required") usually points to missing or incorrectly configured API permissions or tenant settings.
Checklist to Resolve the Issue
- Check Required Permissions and Grant Type
Ensure the app registration has delegated permissions (not just application permissions) for Microsoft Graph or any other APIs your app uses.
Then confirm:
- Admin consent was granted for all required delegated permissions
No additional permissions were added after the admin consent (those wouldn’t be granted automatically)
You can reissue admin consent using the same link if new permissions were added.
- Check Client Tenant Settings (Microsoft Entra ID > Enterprise Applications)
In your client’s tenant:
Go to Microsoft Entra > Enterprise Applications > Your App > Permissions
Ensure "User assignment required?" is disabled
If enabled, you must assign each user manually.
If disabled, the app should be usable by all users.
- Verify Cross-Tenant Access Settings (Optional)
If your app uses custom APIs or you are calling Microsoft Graph with high-privilege scopes (like User.ReadWrite.All
, Directory.Read.All
, etc.), their tenant might have restricted cross-tenant access policies under:
Microsoft Entra > External Identities > Cross-tenant access settings
Ensure inbound access is allowed for your tenant/app or users
- Double-check Redirect URI Matching
Ensure the redirect_uri
used during admin consent matches exactly the one used during user login flow. A mismatch might cause permission denial in some flows.
Summary
Checkpoint | Status Needed |
---|---|
Admin granted consent for all scopes | ✅ |
Admin granted consent for all scopes | ✅ |
"User assignment required" is disabled | ✅ |
App uses delegated permissions | ✅ |
Cross-tenant access allows your tenant | ✅ (optional for high-priv scopes) |
Redirect URI matches login flow | ✅ |
Let me know if you want help validating the permission scopes or generating the correct consent URL.
Martin