Commit Graph

2726 Commits

Author SHA1 Message Date
Letro Bot
2f42e545d6 Add some docs for debugging policies 2026-04-26 12:23:58 +03:30
Letro Bot
2ff0e890ec Validate postnumbers on the register route 2026-04-08 17:58:54 +03:30
Letro Bot
def6fa6539 Integrate postnumber resolver across MAS flows 2026-04-08 17:58:30 +03:30
Letro Bot
fee3f90124 Merge pull request #2 from p-num/fix/rebranding
Fix/rebranding
2026-04-06 19:14:06 +03:30
Letro Bot
2a363aefdd fixed failed tests with corrected error strings 2026-04-04 15:50:28 +03:30
Quentin Gliech
c129fbc613 build(deps): bump the opentelemetry group across 1 directory with 2 updates (#5567) 2026-03-31 13:18:52 +02:00
Quentin Gliech
ede4ae6450 Use get_otel_context instead of accessing OtelData directly
`OtelData` is going to become private in a future version of
`tracing-opentelemetry`. Use the new `get_otel_context` function
introduced in 0.32.1 to extract the trace ID from the span context.
2026-03-31 12:24:08 +02:00
Quentin Gliech
1225439acc Fix scheduled jobs automatic cleanup not working in some conditions (#5574) 2026-03-31 12:05:33 +02:00
Eric Eastwood
e4b08f9006 Explain code being splatted
See https://github.com/element-hq/matrix-authentication-service/pull/5553#discussion_r2984636426
2026-03-25 13:12:15 -05:00
Eric Eastwood
f3d04eedac Merge branch 'main' into rei/violations_are_tagged 2026-03-24 16:42:47 -05:00
Quentin Gliech
bdca9cc6b3 Change queue_schedules FK to ON DELETE SET NULL
The cleanup-queue-jobs job was failing because it tried to delete
completed/failed jobs still referenced by `queue_schedules.last_scheduled_job_id`.
The FK defaulted to RESTRICT, blocking the delete.

Change it to `ON DELETE SET NULL` so cleanup can proceed, matching the
existing semantics (NULL = "never scheduled or cleaned up").

Fixes #5545
2026-03-24 11:44:23 +01:00
Quentin Gliech
47133d8777 Do not check for the registration policy in case of an upstream OAuth 2.0 login that merges into an existing account (#5535) 2026-03-17 15:17:48 +01:00
Quentin Gliech
46afe7b230 Use recaptcha.net domain for Google reCAPTCHA (#5552) 2026-03-17 15:16:17 +01:00
Olivier 'reivilibre
fe5284a3ee Add support for locking to the mock homeserver and use in tests 2026-03-17 11:44:14 +00:00
Olivier 'reivilibre
add9650e10 Convert ViolationCode into ViolationVariant to allow adding fields on each variant 2026-03-16 17:28:24 +00:00
Olivier 'reivilibre
c33880d54f Schedule ProvisionUserJob after locking/unlocking user 2026-03-16 13:44:34 +00:00
Olivier 'reivilibre
e12eed8f33 Update ProvisionRequest with locked flag 2026-03-16 13:44:34 +00:00
shingyu
879b096164 feat(recaptcha): change recaptcha endpoint 2026-03-15 18:18:14 +08:00
Jason Robinson
69cd88e919 Move upstream OAuth2 link policy check
This moves the username policy check lower in the flow to fix
linking of locally existing user accounts with upstream accounts,
when on_conflict allows this, even if the registration policy
would disallow the user.
2026-03-03 21:57:08 +02:00
Tonkku
4b8c5ca156 Apply suggestion from @sandhose
Co-authored-by: Quentin Gliech <quenting@element.io>
2026-03-03 17:11:22 +02:00
Tonkku
14c0c91035 Support MSC4198 login_hint in account management uri 2026-02-23 13:06:59 +02:00
Quentin Gliech
093bd7237e Add a default Message-ID when sending emails (#5495) 2026-02-17 13:43:46 +01:00
Quentin Gliech
4bc281fe30 Comment what .message_id(None) means using lettre 2026-02-17 11:50:32 +01:00
Olivier 'reivilibre
9018f52d61 Fix compat token refresh giving back a consumed token 2026-02-13 15:16:43 +00:00
Olivier 'reivilibre
1341400325 Add compat token refresh regression test 2026-02-13 15:16:43 +00:00
w0xel
9e50b5b744 Create default Message-ID for sent mail 2026-02-12 23:51:11 +01:00
matrixbot
35b2081f28 Automatic merge back to main (#5483) 2026-02-06 12:10:46 +01:00
Quentin Gliech
3ca4f70c2e Use #[serde(other)] for unknown values instead of serde_with::DefaultOnError 2026-02-06 11:31:39 +01:00
Quentin Gliech
c6e8580511 Make the compat login SSO redirect query parameters ignore invalid values 2026-02-06 09:42:56 +01:00
Quentin Gliech
0792fc1423 Split the database cleanup jobs and add a few tests for them (#5464) 2026-02-05 19:30:44 +01:00
Quentin Gliech
ec2a001dad Remove unused code 2026-02-04 18:35:43 +01:00
Quentin Gliech
08ea243bd4 Add a few tests for the cleanup jobs 2026-02-04 14:28:18 +01:00
Quentin Gliech
a059f32f16 Split the cleanup jobs into multiple files 2026-02-04 12:12:28 +01:00
Quentin Gliech
b7a4f49b36 Add syn2mas flag to ignore missing auth providers (#5451) 2026-01-29 11:23:17 +01:00
Jason Robinson
720c77b331 Add syn2mas flag to ignore missing auth providers
Currently `syn2mas` will always error in the Synapse checks phase if it finds auth providers in the `user_external_ids` database table, that are not configured in Synapse config. While normally this the right thing to do, we may have situations where we know what we're doing, and want to ignore invalid looking data in the external identifiers table. If the flag is given, ignore errors and output them as warnings instead.
2026-01-26 14:57:31 +02:00
Quentin Gliech
93a72203a7 Clear out last active IP on each sessions after 30 days (#5448) 2026-01-26 13:57:01 +01:00
Quentin Gliech
270236cb4a Refactor inactive IP cleanup to use pagination
This should avoid dead many dead tuples when processing batches of
sessions to cleanup
2026-01-23 18:52:33 +01:00
Quentin Gliech
4806da8f2d Cleanup finished user/browser sessions (#5444) 2026-01-23 18:27:45 +01:00
Quentin Gliech
7688a8f8b7 Cleanup finished OAuth 2.0 sessions (#5443) 2026-01-23 18:23:55 +01:00
Quentin Gliech
845a448b71 Re-enable the upstream authentication sessions cleanup job (#5439) 2026-01-23 18:17:11 +01:00
Quentin Gliech
3320cf8cc2 Developer documentation about the various cleanup jobs (#5447) 2026-01-23 18:16:11 +01:00
Quentin Gliech
9afb0dd4ce Clean up leftovers in the database schema, part 2 (#5408) 2026-01-23 18:13:29 +01:00
Quentin Gliech
82ba74d34f Clean up unsupported threepids from already deactivated users (#5407) 2026-01-23 17:42:46 +01:00
Quentin Gliech
256d11c5a1 Include pagination params in the tracing fields of cleanup methods 2026-01-23 16:30:26 +01:00
Quentin Gliech
b4025acc80 Add cleanup jobs for inactive session IP addresses
This adds three new scheduled cleanup jobs that clear the last_active_ip
field from sessions that have been inactive for more than 30 days:

- CleanupInactiveOAuth2SessionIpsJob
- CleanupInactiveCompatSessionIpsJob
- CleanupInactiveUserSessionIpsJob

This helps with data minimization by not retaining IP addresses longer
2026-01-23 16:29:29 +01:00
Quentin Gliech
85f71d2200 Add cleanup job for finished user sessions
Implements hard deletion of user/browser sessions that have been finished for more than 30 days, but only after all child sessions are cleaned up.

User sessions can only be deleted when no child sessions exist, ensuring backchannel logout propagation continues to work correctly.
2026-01-22 15:44:57 +01:00
Quentin Gliech
c508c7899e Fix FK constraint to preserve backchannel logout chain
Change compat_sessions.user_session_id FK from ON DELETE SET NULL to ON DELETE NO ACTION. This prevents deletion of user_sessions while compat_sessions still reference them, which is critical for backchannel logout propagation.

When an upstream IdP sends a backchannel logout, MAS must trace through:
  upstream_oauth_authorization_sessions -> user_sessions -> compat_sessions

If user_session_id links are SET NULL, logout propagation fails.

Uses two-step migration (DROP+ADD NOT VALID, then VALIDATE) to minimize table locking during deployment.
2026-01-22 15:44:57 +01:00
Quentin Gliech
3b0937ca8e Add cleanup job for finished OAuth2 sessions
Implements hard deletion of OAuth2 sessions that have been finished for more than 30 days, including their associated access and refresh tokens.
2026-01-22 15:44:56 +01:00
Quentin Gliech
49802c7812 Re-enable upstream OAuth session cleanup job
It should be safe to run now
2026-01-21 14:50:03 +01:00
Quentin Gliech
f8e87ec2c4 Use the user_session_id on upstream authorisations for filtering instead
of authentications

This makes it one less table to read
2026-01-21 14:49:07 +01:00