Low severityauthentication
Power BI Error:
AADSTS900561
What does this error mean?
Microsoft Entra ID (Azure AD) OAuth2 endpoint received a non-POST verb (usually GET) where only POST is accepted.
Common causes
- 1User pressed the browser Back button after completing sign-in, replaying the auth redirect as a GET against the /token or /authorize endpoint (Microsoft's documented primary cause)
- 2Developer error: redirect URI in the Entra ID app registration points at a Microsoft endpoint (/oauth2/v2.0/token, /oauth2/v2.0/authorize) instead of the application's own callback URL
- 3MSAL/ADAL client uses response_mode=form_post but the reply URL is opened directly via GET — e.g. bookmark, copy-pasted link, or email link
- 4Reverse proxy, WAF, Azure Front Door, or load balancer downgrading POST to GET on 302 redirects (verb stripping instead of using 307/308)
- 5Custom logout flow issuing a raw GET to /oauth2/logout instead of using the MSAL logoutRedirect() / end_session_endpoint flow
How to fix it
- 1Open browser DevTools → Network and confirm the failing request: capture the exact HTTP verb and the login.microsoftonline.com path returning 900561. If it only fires after a Back-button click and sign-in still completes, follow Microsoft's guidance and ignore it — catch AADSTS900561 in your app and redirect to home instead of surfacing an error.
- 2In Entra ID (Azure AD) → App registrations → your app → Authentication, verify every Redirect URI points to your application's own callback (e.g. https://app.example.com/auth/callback). None should reference /token, /authorize, or any login.microsoftonline.com path.
- 3In your MSAL/ADAL config, ensure postLogoutRedirectUri is registered and that logout uses the SDK's logoutRedirect() / logoutPopup() — never a hand-built GET to /oauth2/logout or /oauth2/v2.0/logout.
- 4If response_mode=form_post is in use, confirm the reply URL is only ever reached as the POST target of the Entra ID form post. Bookmarks or shared links to that URL will always trigger 900561 — point users at your app root instead.
- 5If traffic flows through a reverse proxy, WAF, Azure Front Door, or an SSO gateway, verify it preserves POST bodies and uses 307/308 (not 302/303) for any redirect on the auth path. Verb downgrade on redirect is a known cause.
Example log output
AADSTS900561: The endpoint only accepts POST requests. Please try again using a POST request. Trace ID: c2a18f44-3d09-4b7e-a501-00e6d2f9c023 Correlation ID: a3f21c88-7b4d-4e01-b92c-001f3d8a5e12 Timestamp: 2026-05-09 08:14:32ZMicrosoftIdentityWebChallengeUserException: IDW10502: An MsalUiRequiredException was thrown due to a challenge for the user. OAuth token acquisition failed for service principal 'pbi-refresh-sp'. Activity ID: b7e30d19-2c4a-4f8c-9a1e-00a5c2d1f034Dataset refresh failed: 'Sales_DW_Daily'. Error code: AADSTS900561. Refresh aborted after 0 retries (non-retryable authentication failure). Next scheduled window: 2026-05-09T09:00:00Z.