This application demonstrates two ways to access protected resources using Keycloak as the identity provider. After authentication, the /secure/attributes page displays every claim released by Keycloak.
Standard OIDC Authorization Code flow. No extra packages needed — implemented manually using Laravel's HTTP client to call Keycloak endpoints.
/auth/callback?code=…&state=…state, exchanges code for tokens at the token endpoint/protocol/openid-connect/userinfo with the access_token to fetch user claims/secure/attributesThe Flutter app authenticates with Keycloak using Authorization Code + PKCE (no client secret in the app), then hands the access_token to this backend to create a server-side session. The session cookie is injected into an in-app WebView.
POST /api/session/bootstrap with Authorization: Bearer <token>session_idPHPSESSID=<session_id> cookie into the in-app WebView/secure/attributes — session found, claims rendered