1.6 KiB
1.6 KiB
TASK-002: Prove OAuth PKCE and App Link end to end
Status: core implementation ready; end-to-end verification blocked by external App Link configuration Owner: Codex Reviewer: Claude
Writable paths
app/src/main/java/com/ubisam/ubgitea/core/auth/app/src/main/java/com/ubisam/ubgitea/feature/auth/app/src/test/java/com/ubisam/ubgitea/core/auth/app/src/test/java/com/ubisam/ubgitea/feature/auth/app/src/main/AndroidManifest.xmlapp/src/main/res/values/strings_auth.xmlapp/build.gradle.ktsgradle/libs.versions.tomldocs/decisions/002-oauth-security.mdtasks/002-oauth-spike.md
Outcome
A user can authorize UBGitea through the system browser, return through the verified App Link, exchange the code using PKCE, and view their Gitea identity.
Acceptance criteria
- Uses a system browser, not WebView.
- Uses fresh random state and PKCE S256 per attempt.
- Rejects mismatched state and malformed callbacks.
- Does not require or contain a client secret.
- Does not log codes or tokens.
- Persists tokens with Keystore-backed protection.
- Handles success, cancellation, denied authorization, network failure, and expired transaction state.
- Calls the authenticated user endpoint and displays the user identity.
- Tests cover URL construction, PKCE, callback validation, and error mapping.
External prerequisites
- Debug and release signing certificate fingerprints
- Correct
assetlinks.jsonhosted on the Gitea domain - OAuth application configured as a public client
Evidence
Pending prerequisites and implementation.