Commit d489a0b
WebAuthn / core
- #18 finishAuthentication now binds the asserted credential to the
challenge-record userHandle and to the response.userHandle when present;
mismatches reject as UnknownCredential before WebAuthn4J verification.
- #33 Extract ChallengeValidator + sealed ChallengeValidation from the
586-line DefaultPasskeyAuthenticationService; ceremony methods now follow
validate -> verify -> map -> emit and the validator is unit-tested in
isolation.
OTP / alt-flows
- #19 Mask phone numbers (+1***1234) in OtpService logs; drop message/body
from LoggingSmsSender and LoggingEmailSender.
- #21 OtpRepository.incrementAttempts now returns the new count; OtpService
rejects when the post-increment count exceeds maxAttempts, closing the
TOCTOU window.
- #28 Replace Argon2id with HMAC-SHA256+server-side-pepper for OTP code
storage (proportionate to 10^6 search space) and drop the argon2 dep
from the OTP module.
- #20 sendLoginEmail collapses UserNotFound into Sent to remove the
account-enumeration shape/timing side channel.
- #22 InMemoryRateLimiter now logs an INFO warning at construction and
Javadocs the per-replica multiplier; production deployments must swap
in a shared limiter.
JWT
- #24 Add RevocationCheck SPI (default no-op) consulted by
PkAuthJwtValidator after signature/claims checks; new Revoked variant
on JwtVerificationResult.
Persistence
- #25 JdbiUserLookup.createOrGetUserHandle is now a single atomic
INSERT ... ON CONFLICT DO UPDATE ... RETURNING, removing the
re-SELECT race window.
- #26 DynamoDB CredentialItem gains @DynamoDbVersionAttribute; updateLabel
and updateSignCount retry up to 3 times on ConditionalCheckFailed.
- #27 New Flyway V6 migration adds revoked_at / revoked_reason to
backup_codes + credentials and creates pkauth_audit_events. Backup-code
consume and credential delete are now soft-deletes with audit rows;
active-row queries filter on revoked_at IS NULL.
Adapters / API
- #29 Micronaut ceremony + admin controllers annotated
@ExecuteOn(TaskExecutors.BLOCKING); Javadoc clarifies the
blocking-SPI design.
- #31 New PkAuthCeremonyJwt.mintForAssertion helper shared by all three
adapters; standardizes amr=["pkauth","webauthn"] and eliminates the
Spring re-fetch.
- #35 Rename adapter classes to the PkAuth* prefix
(Dropwizard Passkey*, Micronaut PkAuthJwtFilter, Spring admin
controllers / result mappers / JwtAuthenticationToken).
- #36 Delete the unused Spring PkAuthAuthenticationProvider +
PreAuthenticatedJwtToken (filter writes SecurityContextHolder directly).
- #30 PkAuthHttpError parses JSON body on construction and exposes
error/detail/outcome; new CeremonyResult discriminated union mirrors
the Java sealed result hierarchies.
- #32 Delete examples/spring-boot-demo DemoConfiguration; relying-party
config now lives under pkauth.relying-party.* in application.yml.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 177b440 commit d489a0b
69 files changed
Lines changed: 1590 additions & 717 deletions
File tree
- clients/passkeys-browser
- src
- test
- examples
- dropwizard-demo/src/main/java/com/codeheadsystems/pkauth/demo/dropwizard
- spring-boot-demo/src
- main
- java/com/codeheadsystems/pkauth/examples/spring
- resources
- test/resources
- pk-auth-admin-api/src/test/java/com/codeheadsystems/pkauth/admin
- pk-auth-core/src
- main/java/com/codeheadsystems/pkauth
- internal
- challenge
- spi
- test/java/com/codeheadsystems/pkauth/internal
- challenge
- pk-auth-dropwizard/src
- main/java/com/codeheadsystems/pkauth/dropwizard
- admin
- auth
- dagger
- resource
- test/java/com/codeheadsystems/pkauth/dropwizard
- admin
- auth
- pk-auth-jwt/src
- main/java/com/codeheadsystems/pkauth/jwt
- test/java/com/codeheadsystems/pkauth/jwt
- pk-auth-magic-link/src
- main/java/com/codeheadsystems/pkauth/magiclink
- test/java/com/codeheadsystems/pkauth/magiclink
- pk-auth-micronaut/src/main/java/com/codeheadsystems/pkauth/micronaut
- pk-auth-otp/src
- main/java/com/codeheadsystems/pkauth/otp
- test/java/com/codeheadsystems/pkauth/otp
- pk-auth-persistence-dynamodb/src/main/java/com/codeheadsystems/pkauth/persistence/dynamodb
- pk-auth-persistence-jdbi/src
- main
- java/com/codeheadsystems/pkauth/persistence/jdbi
- resources/db/migration
- test/java/com/codeheadsystems/pkauth/persistence/jdbi
- pk-auth-spring-boot-starter/src
- main/java/com/codeheadsystems/pkauth/spring
- admin
- autoconfigure
- security
- web
- test/java/com/codeheadsystems/pkauth/spring
- pk-auth-testkit/src/main/java/com/codeheadsystems/pkauth/testkit
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
8 | 9 | | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
14 | 38 | | |
15 | 39 | | |
16 | 40 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
5 | 7 | | |
6 | 8 | | |
7 | 9 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
100 | 125 | | |
Lines changed: 4 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| 117 | + | |
| 118 | + | |
117 | 119 | | |
118 | | - | |
| 120 | + | |
| 121 | + | |
119 | 122 | | |
120 | 123 | | |
121 | 124 | | |
| |||
Lines changed: 0 additions & 47 deletions
This file was deleted.
Lines changed: 7 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
15 | | - | |
16 | | - | |
| 14 | + | |
17 | 15 | | |
18 | 16 | | |
19 | | - | |
20 | | - | |
| 17 | + | |
| 18 | + | |
21 | 19 | | |
22 | 20 | | |
23 | 21 | | |
| |||
Lines changed: 0 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | 9 | | |
19 | 10 | | |
20 | 11 | | |
| |||
Lines changed: 0 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | 1 | | |
8 | 2 | | |
9 | 3 | | |
| |||
Lines changed: 3 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
61 | 63 | | |
62 | 64 | | |
63 | 65 | | |
| |||
66 | 68 | | |
67 | 69 | | |
68 | 70 | | |
69 | | - | |
| 71 | + | |
70 | 72 | | |
71 | 73 | | |
72 | 74 | | |
| |||
0 commit comments