This situation made me create a real monstrous work-around, but sometimes, you don't have an option right?
The problem is basically bumping into 503: 'serviceUnavailable' messages when several (specific?) Azure AD Application permissions are set in your Azure AD Application, which should not happen.
Context and technical queries
The context is specifically for Application permissions (app-only auth) and NOT delegated permissions. Token is retrieved by:
HTTP POST https://login.microsoftonline.com/e6fcb01a-f706-4b1b-872b-1e7645d78491/oauth2/v2.0/token
headers:
Content-Type=application/x-www-form-urlencoded
-------------
client_id=<App GUID>
client_secret=<App SECRET>
scope=https://graph.microsoft.com/.default
grant_type=client_credentials
/sites/root query retrieved by:
HTTP GET https://graph.microsoft.com/v1.0/sites/root
headers: Authorization=Bearer <AccessToken>
-------------
Reproduce this situation:
- Create an Azure AD Application
- Add Application Permission > Sites.ReadWrite.All
- Grant Admin Consent for
- Create Secret
- Generate Access Token (using)
- Run Query with token (works)
Forcing it to break (either add all at once or 1-by-1)
- Add Application Permission > Group.Create
- Grant Admin Consent for
- Generate Access Token
- Run Query with token (fails?)
Does it work?
- Add Application Permission > Group.ReadWrite.All
- Grant Admin Consent for
- Generate Access Token
- Run Query with token (fails?)
- Repeat for another permission. until it breaks.
Does it break?
- Fails forever
Workaround:
Split up App Permission across multiple AD applications.