File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -66,9 +66,9 @@ sequenceDiagram
6666 SPA->>Entra: Auth Code + PKCE (login)
6767 Entra-->>U: Sign-in UI / consent
6868 U-->>Entra: credentials (+ MFA)
69- Entra-->>SPA: id_token + access_token<br/>aud=api://< apiClientId> <br/>scp=Evidence.Read<br/>roles=[CaseReader| CaseAdmin]
69+ Entra-->>SPA: id_token + access_token<br/>aud=api://{ apiClientId} <br/>scp=Evidence.Read<br/>roles=[CaseReader, CaseAdmin]
7070 U->>SPA: Click Download EV-001
71- SPA->>API: GET /api/evidence/EV-001/download<br/>Authorization: Bearer < user JWT>
71+ SPA->>API: GET /api/evidence/EV-001/download<br/>Authorization: Bearer { user JWT}
7272 API->>API: Spring Security validates JWT<br/>issuer = login.microsoftonline.com/{tenant}/v2.0<br/>aud, scp, roles
7373 Note over API,IMDS: First call after deploy:<br/>MI token cache is empty
7474 API->>IMDS: GET /metadata/identity (MSAL4J)
@@ -122,7 +122,7 @@ This is the sequence to keep in mind when something goes wrong: a `502 Bad Gatew
122122
123123``` mermaid
124124flowchart TB
125- Start([User clicks Download]) --> SPAreq["SPA fetch<br/>GET /api/evidence/EV-001/download<br/>Authorization: Bearer < user JWT> "]
125+ Start([User clicks Download]) --> SPAreq["SPA fetch<br/>GET /api/evidence/EV-001/download<br/>Authorization: Bearer { user JWT} "]
126126 SPAreq -->|"CORS preflight"| Preflight{"OPTIONS allowed?<br/>SecurityConfig.corsConfigurationSource"}
127127 Preflight -->|"no"| CORSfail[["Browser blocks · CORS error"]]
128128 Preflight -->|"yes"| GET["GET reaches Spring Security filter chain"]
You can’t perform that action at this time.
0 commit comments