Commit Graph

82 Commits

Author SHA1 Message Date
Jean-Benoît Grimaldi
56a37fc7ae Fix wrong username regex 2026-02-07 11:44:22 +01:00
Quentin Gliech
207c526f00 Upgrade Rust, opa, regal, cargo-auditable and Node 2026-02-04 18:35:43 +01:00
Olivier 'reivilibre
673cfa004c (delint: Is this a less messy rule?) 2025-12-01 11:51:51 +00:00
Olivier 'reivilibre
9c7c157744 Remove is_interactive and carry on with login types 2025-12-01 11:47:59 +00:00
Olivier 'reivilibre
959e383fc4 fixup! Introduce compat login policy 2025-11-26 13:48:01 +00:00
Olivier 'reivilibre
1ce2c39dd6 Make policy depend on whether the login is interactive or not 2025-11-25 18:41:14 +00:00
Olivier 'reivilibre
04951d983e Don't apply a session limit when genuinely replacing a session 2025-11-25 18:41:14 +00:00
Olivier 'reivilibre
9f36cfd8b9 Introduce compat login policy 2025-11-25 18:41:14 +00:00
Olivier 'reivilibre
1690570015 (update files after merge) 2025-11-13 15:55:25 +00:00
Olivier 'reivilibre
16f443eba0 Merge branch 'main' into rei/policy_driven_session_limit 2025-11-13 15:54:48 +00:00
Quentin Gliech
db2288b4f3 Remove the nullable transform from the policies schemas 2025-11-07 11:11:41 +01:00
Quentin Gliech
e2490688a5 Merge remote-tracking branch 'origin/main' into quenting/schemars-0.9 2025-11-06 17:34:43 +01:00
Olivier 'reivilibre
26d76db6d9 Add policy violation for too many devices 2025-11-06 10:12:14 +00:00
Olivier 'reivilibre
21fa107584 Add session counts to policy input 2025-11-06 10:12:14 +00:00
Olivier 'reivilibre
e2a08d2365 Only allow C-S device scopes when the C-S API scope has been requested
It'd be weird for a client to request a device on the client-server API but yet not request any client-server API scopes to use it with.

By adding this restriction, we can then create a partial index on the oauth2_sessions table to quickly identify sessions that have C-S API scopes and use this as a proxy metric for how many sessions may have device scopes.
This in turn makes it feasible to efficiently limit the number of 'devices' a user has, or more precisely: the number of sessions with client-server API access.

We can't do the same for device scopes themselves because, other than nastiness like parsing the JSON stringification of the scope list, it's not feasible to identify device scopes within a Postgres index predicate.

Part of: #4339
2025-10-31 15:17:39 +00:00
Olivier 'reivilibre
532e4a4794 Update tests to prepare for needing C-S API scope 2025-10-31 15:12:45 +00:00
Olivier 'reivilibre
560ebc2202 Drive-by podman Makefile fix 2025-10-31 15:07:29 +00:00
Quentin Gliech
e4844968d3 Add a configuration option to make email optional for password registration 2025-10-07 17:28:01 +02:00
Quentin Gliech
4bccafa69f Allow more characters in redirect URI paths (#4975) 2025-09-12 14:51:36 +02:00
Quentin Gliech
80825d28ce Fix reference to the regal image 2025-09-12 10:58:55 +02:00
Quentin Gliech
a5e75541ef Upgrade OPA and regal to latest versions 2025-09-12 10:52:39 +02:00
Andrew Ferrazzutti
d49ff70640 Don't mistakenly invoke a regex range expression 2025-09-03 12:56:21 -04:00
Andrew Ferrazzutti
cf9d7052c7 Allow more characters in redirect URI paths
Allow all unreserved characters permitted in URI paths according to
https://www.rfc-editor.org/rfc/rfc3986#section-3.3
2025-09-03 11:29:49 -04:00
Quentin Gliech
7e018a06aa Merge remote-tracking branch 'origin/main' into quenting/stable-api 2025-08-04 16:38:49 +02:00
Quentin Gliech
64f5bba26d Allow the stable scope in the policy 2025-06-13 15:55:22 +02:00
Quentin Gliech
a35db23b31 Upgrade schemars to 0.9 2025-06-12 15:48:24 +02:00
Quentin Gliech
c3707c13ae Add license headers in most files that missed them 2025-06-12 11:01:07 +02:00
Michael Telatynski
6ecc150def delint 2025-05-28 14:57:51 +01:00
Michael Telatynski
2685133410 Add tests 2025-05-28 14:53:19 +01:00
Michael Telatynski
e64cd84081 Fix client_registration URI regex not accepting full query string grammar 2025-05-13 11:28:56 +01:00
Michael Telatynski
ba986d36f9 Move the test 2025-05-08 08:41:26 +01:00
Michael Telatynski
e5a2debd4c Allow non-default https port 2025-05-08 08:39:37 +01:00
Michael Telatynski
ccdbf69e5f opa fmt 2025-05-07 18:52:01 +01:00
Michael Telatynski
5ec9bfc7fa Fix MSC2966 compliance around redirect_uri validity
Fixes https://github.com/element-hq/matrix-authentication-service/issues/4528
2025-05-07 18:49:52 +01:00
Quentin Gliech
d40fdbd995 Allow banning/alllowing usernames patterns during registration 2025-03-03 10:31:14 +01:00
Quentin Gliech
7c09b4510b Update OPA and Regal to their latest versions 2025-02-18 11:48:44 +01:00
Quentin Gliech
0ab0f13c7c Match suffixes and prefixes in string constraints 2025-02-17 16:40:10 +01:00
Quentin Gliech
af569d9642 Built-in support for banning IPs, user agents and email patterns 2025-02-17 15:34:46 +01:00
Quentin Gliech
0eb6638e41 Expose the user agent string to the policy execution context 2025-02-17 11:51:26 +01:00
Quentin Gliech
aa6436aa1a Allow banning registrations by IP address 2025-02-17 10:18:11 +01:00
Quentin Gliech
67468ca0bc Remove the unused password input schema 2025-02-17 10:17:30 +01:00
Quentin Gliech
d16049524b Propagate more specific error messages from the policy on registration
This makes some policy errors translatable
2025-01-06 10:15:08 +01:00
Quentin Gliech
2820794c8d Allow longer & shorter usernames, complying with the MXID length spec 2025-01-06 10:15:08 +01:00
Quentin Gliech
881c6df5cc Setup Regal to lint policies and clean them up 2024-12-19 11:08:57 +01:00
Quentin Gliech
4ccce4de46 Remove the contacts requirement from the client registration policy 2024-09-20 20:39:04 +02:00
reivilibre
1afd2a2906 Remove OPA-based password policy enforcement (#2875)
Co-authored-by: Quentin Gliech <quenting@element.io>
2024-07-16 14:33:04 +01:00
Quentin Gliech
fbb8044dbd Bump OPA 2024-05-07 07:32:02 +02:00
Quentin Gliech
3ea24dc8e5 Remove the invalid characters OPA policy tests 2024-05-03 16:56:56 +02:00
Quentin Gliech
6db50f098d Allow more characters in device IDs 2024-05-03 16:56:56 +02:00
Alex Babel
5d85d0fb65 Increase allowed username length to 64 in the default policy (#2471) 2024-03-18 10:58:21 +00:00