Trong Huu Nguyen
af6642fe90
refactor(openid): use pkce implementation from golang.org/x/oauth2
2023-10-10 10:18:01 +02:00
Trong Huu Nguyen
a2e939f716
fix(handler/sessionrefresh): handle not found error
2023-10-04 10:06:03 +02:00
Trong Huu Nguyen
337723150b
fix(reverseproxy/autologin): skip cleaning redirect target
2023-09-25 14:13:15 +02:00
Trong Huu Nguyen
34d90d2c78
fix(autologin): do not return ambiguous 3xx redirect
...
If autologin is enabled, check for headers that indicate that the request is a navigation request
and respond appropriately.
A navigation request is assumed to match all of the following:
- uses the GET HTTP method
- either:
- a) sends the fetch metadata headers, specifically
`Sec-Fetch-Mode=navigate` and `Sec-Fetch-Dest=document`, or (if
unsupported by the browser)
- b) sends the `Accept` header with a value that contains
`text/html` (which most browsers do by default for navigation
requests, the exception being IE8 AFAIK)
Non-navigation requests (e.g. fetch / xhr / ajax requests) will receive a
401 Unauthorized, with the Location header set to the login endpoint.
The redirect parameter is also set to point back to the URL found in the
Referer header (though with the scheme and host removed to only allow
redirects relative to the origin host.)
With this fix, autologin will also intercept requests other than GET.
This is to improve the security posture of upstreams that assume that autologin
enforces authentication for all methods.
Fixes #156 .
2023-09-22 14:51:35 +02:00
Trong Huu Nguyen
c4911b1344
feat(session): add feature toggle for automatic refreshing
2023-09-15 09:08:42 +02:00
Trong Huu Nguyen
75567f3016
refactor(handler): split up logout and local logout handlers
2023-07-20 12:01:21 +02:00
Trong Huu Nguyen
1e485aa0f8
refactor(url): embed validator instead of using proxy struct
2023-07-20 11:54:05 +02:00
Trong Huu Nguyen
d0c5e91c45
refactor(url): remove unused field for relative validator
2023-07-20 10:52:47 +02:00
Trong Huu Nguyen
2925ebe9e4
fix(handler/session): return metadata response even if session is inactive
2023-06-09 13:52:36 +02:00
Trong Huu Nguyen
9852b0a290
fix(handler/logout): ignore session validation errors; attempt to delete regardless
2023-06-09 13:52:35 +02:00
Trong Huu Nguyen
390cd78e9f
feat(handler): set legacy cookie for sso server
2023-05-12 08:47:26 +02:00
Trong Huu Nguyen
5c96d5a0fd
feat(all): reduce log level for some spammy statements
2023-05-08 10:56:07 +02:00
Trong Huu Nguyen
0c531d9ec1
perf: increase max idle connections for http clients
2023-05-04 14:45:45 +02:00
Trong Huu Nguyen
6151aa3279
feat(openid, handler): support runtime override of redirect after single-logout
...
Fixes #100 .
2023-05-04 14:45:13 +02:00
Trong Huu Nguyen
3a239a95c3
feat(reverseproxy): validate acr and redirect if applicable
2023-04-29 11:54:53 +02:00
Trong Huu Nguyen
7c98fe161e
refactor(handler/reverseproxy): retrieve both session and token
2023-04-29 11:17:00 +02:00
Trong Huu Nguyen
568f9f7683
feat(handler): use 302 instead of 303 for redirects
2023-04-29 08:42:29 +02:00
Trong Huu Nguyen
bc651d9082
fix: use 303 instead of 307 for redirects
2023-04-28 01:30:17 +02:00
Trong Huu Nguyen
c60f9478a5
fix(metrics): strip urls for login counter
2023-04-26 09:57:29 +02:00
Trong Huu Nguyen
55d2e0ce3b
feat(metrics): add redirect label for login counter
2023-04-26 09:28:00 +02:00
Trong Huu Nguyen
0ba41e312a
feat(handler): local logout returns 204 instead of redirect
...
Redirecting after local logout introduces the possibility of matching a
path that automatically performs login, which for a local logout means
the user is automatically logged in again due to having an SSO session -
which nullifies the whole logout operation.
Applications that want local logout must trigger and handle the response
just like any other API call.
2023-04-21 16:25:26 +02:00
Trong Huu Nguyen
0ba124809a
feat(handler): local logout redirects back to preconfigured URL
2023-04-21 15:21:02 +02:00
Trong Huu Nguyen
19b2401831
feat(metrics): add authentication method reference label for successful logins
2023-04-18 12:20:23 +02:00
Trong Huu Nguyen
442e056b26
refactor(handler): inline error handler, remove unnecessary getters
2023-02-24 19:24:02 +01:00
Trong Huu Nguyen
f346e9e91d
refactor(router): use a more apt name for wildcard handler
2023-02-24 18:33:41 +01:00
Trong Huu Nguyen
5342913676
refactor: move cookie options to handler constructors
2023-02-24 18:21:36 +01:00
Trong Huu Nguyen
3e93423464
refactor(sso/server): redirect requests for wildcard routes to default URL
2023-02-22 10:19:26 +01:00
Trong Huu Nguyen
9ecfdb73ef
fix(handler): time-to-refresh in session metadata is disabled for sso
2023-02-22 10:11:39 +01:00
Trong Huu Nguyen
94a66fac2a
refactor(handler): extract path matcher for reuse
2023-02-21 14:45:14 +01:00
Trong Huu Nguyen
59a2e7b7a0
refactor(session): simplify AccessToken method, don't export methods that are only used within package
2023-02-21 14:40:27 +01:00
Trong Huu Nguyen
27897dad63
refactor(handler/standalone): use new sessionmanager, remove unneeded methods
2023-02-21 14:16:51 +01:00
Trong Huu Nguyen
fb28da7241
refactor: consolidate handlers
2023-02-16 10:55:50 +01:00
Trong Huu Nguyen
3274cc5c65
refactor: move redirect package into url, clean up naming
2023-02-16 09:24:39 +01:00
Trong Huu Nguyen
c3c0c01926
feat(sso): partially implement handlers
2023-02-10 14:58:09 +01:00
Trong Huu Nguyen
a4e4fc752e
refactor(handler): remove provider name getter from handler
2023-02-10 14:57:57 +01:00
Trong Huu Nguyen
f51fe97b23
refactor(handler): flatten handler modules
2023-02-10 14:57:48 +01:00
Trong Huu Nguyen
08eefbf1d5
refactor(openid): clean up client and provider
2022-09-02 18:08:36 +02:00
Trong Huu Nguyen
92ee6313c5
refactor: remove unnecessary interfaces
2022-09-02 17:39:27 +02:00
Trong Huu Nguyen
c8f48335d4
refactor(openid/config): extract getter for ingresses
2022-09-02 15:17:36 +02:00
Trong Huu Nguyen
9144056e28
refactor(handler): split up request handlers into separate modules
2022-09-02 14:53:11 +02:00
Trong Huu Nguyen
5d00d132dd
refactor: decouple handler implementation from router and middleware
2022-09-01 19:39:47 +02:00
Trong Huu Nguyen
d9cc60c4cc
refactor: move autologin to handler pkg
2022-09-01 19:35:58 +02:00
Trong Huu Nguyen
d5bbca9897
feat: rudimentary support for refresh tokens
2022-08-26 14:32:39 +02:00
Trong Huu Nguyen
c29501d964
refactor(handler): add utility method for path-aware cookie options
2022-08-19 12:09:21 +02:00
Trong Huu Nguyen
5990e4bb71
refactor(session): extract session handler
2022-08-19 11:44:13 +02:00
Trong Huu Nguyen
5a50ba7c3a
feat: support multiple ingresses
...
Replace hardcoded callback URLs with dynamic generation
of URLs based on incoming requests. These are validated against
a pre-registered list of ingresses for which Wonderwall is considered
authorative for.
We also preserve the cookie behaviour; the most specific ingress path
and domain is used for the cookies.
The `url` package has been moved to the `handler` package, and its
implementation refactored slightly for readability and DRY.
2022-08-17 20:43:56 +02:00
Trong Huu Nguyen
a9e9644764
refactor: move context utils to middleware
2022-08-17 11:39:40 +02:00
Trong Huu Nguyen
e460a5eab2
fix(handler/reverseproxy): do not overwrite host header
2022-08-17 11:39:17 +02:00
Trong Huu Nguyen
13fd194318
refactor(handler/default): extract reverseproxy to avoid unnecessary instantiation
2022-08-11 09:31:10 +02:00
Trong Huu Nguyen
31ab8ad3b7
refactor(handler/default): redirect auto-login requests instead of inlining login handler
2022-07-21 08:21:28 +02:00