v3.5.1
What's new
Admin dashboard sign-in with Microsoft Entra ID.
The orchestrator dashboard at /dashboard/ can now require MSAL sign-in and the exact Entra app role Admin before dashboard APIs return administrative data. This closes the prior gap where the dashboard authorization model expected bearer tokens but the SPA had no built-in sign-in flow.
Existing deployments are unchanged unless dashboard authentication is enabled with App Configuration.
Configuration
Set these keys under the gpt-rag-orchestrator label:
ENABLE_DASHBOARD=trueOAUTH_AZURE_AD_TENANT_ID=<tenant-id>OAUTH_AZURE_AD_CLIENT_ID=<single-app-registration-client-id>OAUTH_AZURE_AD_API_SCOPE=api://<client-id>/access_as_user(optional, this is the default)
Use one App Registration as both the dashboard SPA and orchestrator API. Define the app role value as exactly Admin under App registrations > app > App roles, then assign users under Enterprise applications > app > Users and groups.
Fixed
- Dashboard API authorization now validates the orchestrator API audience and enforces the verified
rolesclaim. - Partial Entra configuration fails closed instead of silently skipping audience validation.
- Malformed role claims are rejected.
- The dashboard SPA now obtains API-scoped MSAL tokens, sends them as bearer tokens, and distinguishes reauthentication (401) from missing
Adminrole (403). - Sign-in, sign-out, account switching, loading, error, and accessible alert states were added to the dashboard SPA.
Documentation
- README now documents the single App Registration model,
Adminrole definition and assignment, token scope behavior,Assignment required? = Nofor app-level 403 validation, and the need to sign out/in after app role changes. .azure/deployment-plan.mdcaptures the prepared Azure validation plan and notes that the previousrg-gptrag-546valvalidation resource group no longer exists.
Validation
- PR #260 checks passed.
- Focused dashboard tests: 32 passed.
- Full test suite before release preparation: 297 passed.
- Frontend ESLint and Vite/TypeScript build passed.
Follow-up
Live tenant validation still needs a recreated or selected GPT-RAG validation environment, because the previous rg-gptrag-546val resource group is no longer present in the target subscription.