Commit Graph

1332 Commits

Author SHA1 Message Date
Quentin Gliech c64273afc3 Recover gracefully from login errors
Fixes #5
2021-08-26 18:08:28 +02:00
Quentin Gliech 47e79307a6 Simplify saving encrypted cookies 2021-08-26 17:39:33 +02:00
Quentin Gliech a1d78eae55 WIP: handle errors in forms 2021-08-26 11:49:22 +02:00
Quentin Gliech 705d253322 Use custom error types for CSRF and login errors 2021-08-26 11:49:22 +02:00
Quentin Gliech 5fdd833b26 Better handle .env file loading error
Previously it would crash if the file did not exist
2021-08-26 11:14:49 +02:00
Quentin Gliech c3087ac925 Display the OIDC discovery document on the index 2021-08-15 11:27:00 +00:00
Quentin Gliech d056c6ef93 Add registration view 2021-08-15 09:56:28 +00:00
Quentin Gliech bac4125d8c Load environment variables from .env files
This allows to properly set the OAuth 2.0 Issuer base in the Codespace
2021-08-15 09:21:15 +00:00
Quentin Gliech 2361791951 Setup GitHub Codespaces 2021-08-14 20:50:07 +00:00
Quentin Gliech c4950318dd Commit transaction after exchanging the auth code 2021-08-14 14:35:52 +02:00
Quentin Gliech d5d9cfe337 ci: Download deps with MSRV 2021-08-14 13:28:03 +02:00
Quentin Gliech 69035e4fb8 Set MSRV and let beta & nightly fail in CI 2021-08-14 13:18:08 +02:00
Quentin Gliech b5adc80838 Implement code exchange endpoint
Also implement proper client authentication and fix introspection
endpoint
2021-08-14 12:31:19 +02:00
Quentin Gliech 3bdfd68f9d Rework warp top-filters to get proper 404 errors
Before, some had `warp::get().and(warp::path!("foo"))`, which resulted
to a `405 Method not allowed` instead of a 404.

It also uses the `wrap::path!` macro instead of the function to ensure
we're not setting a prefix
2021-08-13 16:20:09 +02:00
Quentin Gliech 787ff192fe Implement basic token introspection endpoint 2021-08-13 15:45:51 +02:00
Quentin Gliech 0596b65f12 Implement proper access token generation 2021-08-13 14:15:20 +02:00
Quentin Gliech da13e24789 Acquire DB conns and txns on filter level
This avoids having the pool everywhere and instead have connections and
transactions as parameters
2021-08-13 09:38:41 +02:00
Quentin Gliech 4eb1b5d4f8 allow completing an oauth2 session after login 2021-08-06 16:57:49 +02:00
Quentin Gliech 274251ceda wrap HTML responses with warp::reply::html
This sets the Content-Type in responses
2021-08-06 13:57:51 +02:00
Quentin Gliech 66f0605c15 set the response_{modes,types}_supported fields in the discovery document 2021-08-06 13:55:45 +02:00
Quentin Gliech 0e68061f7f support the form_post response mode
also clarify the `register_templates` macro
2021-08-06 12:17:19 +02:00
Quentin Gliech 88c0a80f64 Continue implementing the authorization code grant 2021-08-05 23:44:35 +02:00
Quentin Gliech bbeef9151d Document some of the templates related structures 2021-08-05 17:48:41 +02:00
Quentin Gliech f5333da0d2 Remove unnecessary boxing of filters
This might help with error handling, knowing what filter are fallible or not
2021-08-05 17:46:46 +02:00
Quentin Gliech 7a3bcd210d Strongly-typed templates 2021-08-05 14:43:42 +02:00
Quentin Gliech dcc84e1083 starting the oauth2 authorization flow
also enable compile-time validation of queries
2021-07-31 23:22:41 +02:00
Quentin Gliech 1cfd74dae5 move all IDs in DB to 64bit integers 2021-07-31 15:11:35 +02:00
Quentin Gliech 95677fea03 remove old sessions migrations 2021-07-31 14:51:30 +02:00
Quentin Gliech f079229abd better CSRF form handling 2021-07-31 14:47:54 +02:00
Quentin Gliech 9b6eae17ea better logging and http handling 2021-07-30 23:07:29 +02:00
Quentin Gliech dcc4cee6b4 better enforcement of auth and csrf protection 2021-07-30 18:02:05 +02:00
Quentin Gliech 40aa7fcd01 fix clippy errors 2021-07-30 15:36:01 +02:00
Quentin Gliech 0eddd715c8 move the CSRF save filter to crate::filters::csrf 2021-07-30 15:31:34 +02:00
Quentin Gliech 490f97abb7 update dependencies 2021-07-30 15:21:11 +02:00
Quentin Gliech 0499d1a47f migrate to warp, last part 2021-07-30 15:19:30 +02:00
Quentin Gliech d36069e0fe WIP: migrate to warp, part 3 2021-07-29 16:58:26 +02:00
Quentin Gliech dc049e96a8 WIP: migrate to warp, part 2 2021-07-29 14:56:33 +02:00
Quentin Gliech df68f0e2c0 WIP: migrate to warp 2021-07-27 19:20:24 +02:00
Quentin Gliech 69797c711e reimplement CSRF logic 2021-07-27 14:25:15 +02:00
Quentin Gliech 865d5851db oauth2-types: PKCE-related types 2021-07-25 20:11:09 +02:00
Quentin Gliech b149760455 properly save session with multiple auth
This will help knowing when the user last authed, support MFA & other
login types, support acr_values & max_time, etc.
2021-07-25 14:42:48 +02:00
Quentin Gliech e907b99db7 rework OIDC metadata endpoint 2021-07-22 16:01:55 +02:00
Quentin Gliech 1b3784840c replace custom serde types with serde_with in oauth2-types 2021-07-22 14:38:14 +02:00
Quentin Gliech f8184f4026 enable std feature in password-hash to avoid manually building errors 2021-07-17 11:21:58 +02:00
Quentin Gliech d9806e35b1 store users in database 2021-07-17 00:49:25 +02:00
Quentin Gliech 0abb8b9505 fix CI by removing the --offline flag from rustfmt 2021-07-16 23:22:17 +02:00
Quentin Gliech 36333ae0ab fix dependencies fetching in CI 2021-07-16 23:19:03 +02:00
Quentin Gliech 219b2eea06 cache Cargo dependencies per OS in CI 2021-07-16 23:16:21 +02:00
Quentin Gliech e8f8c1e7f0 run Cargo in offline mode in CI 2021-07-16 23:04:13 +02:00
Quentin Gliech 444d356000 Retry downloading dependencies twice in CI 2021-07-16 22:55:26 +02:00