Parent PRD
#110
Depends on
#120 (scaffold — closed, delivered by PR #131)
Summary
Remove the Keycloak OIDC authentication from NoteBookmark.MauiApp and replace it with a no-op LocalAuthService that always returns authenticated. The Android app runs on a personal, locked device — device-level security (PIN/biometric) is the authentication perimeter. Keycloak actively hurts the offline-first goal since expired tokens lock users out.
Context
- The web app (NoteBookmark.BlazorApp) keeps Keycloak — it's exposed on the internet and needs auth
- The API (NoteBookmark.Api) has no auth middleware (UseAuthentication/UseAuthorization are not called), so Bearer tokens from the MAUI app were never validated anyway
- The existing IAuthService interface should be kept as an abstraction for future use (e.g., optional biometric lock)
Tasks
Files affected
- src/NoteBookmark.MauiApp/Auth/LocalAuthService.cs (new)
- src/NoteBookmark.MauiApp/Auth/KeycloakAuthService.cs (delete or keep)
- src/NoteBookmark.MauiApp/Auth/KeycloakConfig.cs (delete or keep)
- src/NoteBookmark.MauiApp/MauiProgram.cs
- src/NoteBookmark.MauiApp/App.xaml.cs
- src/NoteBookmark.MauiApp/Components/Pages/Login.razor
- src/NoteBookmark.MauiApp/Components/Pages/Home.razor
- src/NoteBookmark.MauiApp/Platforms/Android/AndroidManifest.xml
- src/NoteBookmark.MauiApp/wwwroot/appsettings.json
Acceptance Criteria
Rationale
User stories 10 and 11 from the PRD are superseded — Android device lock replaces app-level auth.
Parent PRD
#110
Depends on
#120 (scaffold — closed, delivered by PR #131)
Summary
Remove the Keycloak OIDC authentication from NoteBookmark.MauiApp and replace it with a no-op LocalAuthService that always returns authenticated. The Android app runs on a personal, locked device — device-level security (PIN/biometric) is the authentication perimeter. Keycloak actively hurts the offline-first goal since expired tokens lock users out.
Context
Tasks
Files affected
Acceptance Criteria
Rationale
User stories 10 and 11 from the PRD are superseded — Android device lock replaces app-level auth.