Commit Graph
172 Commits
Author SHA1 Message Date
Alex Ababii 8875d062b0 upd tests for auth requests middelware 2026-09-08 09:37:51 +02:00
Alex Ababii d1d20edbd2 log jwt expired on debug level instead of error 2026-09-08 09:37:51 +02:00
Dominik Schmidt 7f7a938c3f fix(proxy): restrict JWT signed urls to the allowed HTTP methods
The legacy OC-Signature path already rejects methods outside
PRE_SIGNED_URL_ALLOWED_HTTP_METHODS, the JWT path did not. A leaked
signed download url could be used for PUT, DELETE, MOVE or PROPFIND
as the signing user for the lifetime of the signature.
2026-09-07 13:00:09 +02:00
Jörn Friedrich Dreyer 0776a479da send all /data throught middleware
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-08-21 07:34:46 +02:00
Jörn Friedrich Dreyer a93ec92789 rewrite more /data urls
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-08-21 07:34:46 +02:00
Jörn Friedrich Dreyer a74661618e refactor datagateway into proxy middleware
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2026-08-21 07:34:46 +02:00
Jörn Friedrich Dreyer 6f5f993ada Merge pull request #3288 from fschade/feat-modernize-opa
perf(policies): reuse the compiled rego query across evaluations
2026-08-12 17:58:13 +02:00
Florian Schade 1e7cfaf92d refactor(policies): read the rego policies once at startup 2026-08-12 17:01:49 +02:00
Florian Schade cd7f8f91b6 fix: oidc middleware claim race 2026-08-11 11:39:50 +02:00
Elias Schneider 4734c57f2b fix(proxy): honor access token cache ttl 2026-07-14 17:49:40 +02:00
André Duffeck 1ea634e6e3 Do not try to create personal spaces for lightweight or service users
This fixes error logs like

RR error when calling Createhome error="gateway: grpc failed with code CODE_INVALID_ARGUMENT" line=github.com/opencloud-eu/opencloud/services/proxy/pkg/middleware/create_home.go:87 service=proxy

e.g. during internal requests to the data provider.
2026-06-19 11:05:44 +02:00
Florian Schade 159785a3b5 enhancement: make collaboration font management functionality public 2026-06-11 09:28:37 +02:00
Florian Schade 457284885b fix: remove unnecessary error log it the oidc access token verify method is set to none 2026-05-20 15:11:03 +02:00
Florian Schade 288e67cc39 chore: replace interface with any 2026-04-23 09:31:11 +02:00
Ralf Haferkamp d9f39773e7 proxy: add memory cache for tenant id mapping
This is to reduce the number of "proxy->gateway->users->ldap" roundtrips
for the tenant id mapping.

The cache currently has a non-configurable ttl of 10 min.

Related: #2310
2026-04-09 17:46:50 +02:00
Ralf Haferkamp a931e53c26 proxy: Allow mapping from an external tenant id to the internal id
When the tenant id coming in via the OIDC claims doesn't match the
tenant id on the provisioned user, a mapping can be configured and
resolved via the reva TenantAPI service (now started as part of the
"users" service).

Closes: #2310
2026-04-09 17:46:50 +02:00
Ralf Haferkamp 33f45fa965 feat(multi-tenancy): verify tenant via OIDC claim
When multi-tenancy is enable we now allow to specify an OIDC claim
against which the tenantid of the user resolved via CS3 apis is matched.

Partial: #2310
2026-04-02 16:10:53 +02:00
Michael Barz f0836c54fb feat: add userid to spans (#2536) 2026-03-30 10:32:24 +02:00
Florian Schade e8ecbd7af1 refactor: make the logout mode private 2026-02-25 14:02:09 +01:00
Florian Schade fd614eacf1 fix: use base64 record keys to prevent separator clashes with subjects or sessionIds that contain a dot 2026-02-25 14:02:09 +01:00
Florian Schade f72e3f1e32 chore: cleanup backchannel logout pr for review 2026-02-25 14:02:09 +01:00
Florian Schade f6553498f6 enhancement: finalize backchannel logout 2026-02-25 14:02:09 +01:00
6a0fd89475 refactor deletion
Co-authored-by: Jörn Dreyer <j.dreyer@opencloud.eu>
Co-authored-by: Michael Barz <m.barz@opencloud.eu>
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2026-02-25 14:02:09 +01:00
Christian Richter cb38aaab16 create mapping in cache for subject => sessionid
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2026-02-25 14:02:09 +01:00
Ralf Haferkamp 6dde2839df fix(oidc_auth): Fix userinfo cache expiration logic
When the userinfo claims store in the usercache is found to be expired,
do not return an error but ignore the cached entry and force a
re-verification of the access token (either via parsing the JWT again or
via a UserInfo lookup).
This is required for setups with non-JWT access tokes where the expiry
date set in the cached claims does not reflect the actual token expiry,
but just the CacheTTL.

Fixes: #1493
2026-02-19 13:17:17 +01:00
Christian Richter 97ee9b36a5 incorporate requested changes
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2025-11-19 09:38:16 +01:00
Christian Richter f9807f9f3a actually load overrideyaml
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2025-11-19 09:38:16 +01:00
Christian Richter 8007e8a269 add ability to completely override csp config
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2025-11-19 09:38:16 +01:00
Christian Richter 63603679a5 remove obsolete comment
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2025-11-19 09:38:16 +01:00
Christian Richter 16f9667fe8 adapt tests & deepmerge
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2025-11-19 09:38:16 +01:00
Christian Richter d16524510a adapt tests
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2025-11-19 09:38:16 +01:00
Christian Richter 20b903b32d load two yaml configs
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2025-11-19 09:38:16 +01:00
Ralf Haferkamp 8cea8c8cfd feat(proxy): account_resolver multi-tenancy
Make the account resolve reject users without a tenantid, when
multi-tenancy is enabled.
2025-10-06 11:21:57 +02:00
Ralf Haferkamp 86db525cec feat(tracing): Improve tracing for proxy middlewares
Each middleware adds a new span with a useful name now.
2025-09-02 17:02:04 +02:00
Ralf Haferkamp 51c32c5e15 fix(tracing): Don't start separate span for request-id attr
Just add the request id as an attribute to the span created by the
'otelhttp' middleware.
2025-09-02 12:13:11 +02:00
Ralf Haferkamp 3a8b370a08 fix(proxy): First login fails in auto provision setups
Redeclaring the `err` variable inside the if statement made the
later error check fail even when the user was successfully created.

Fixes: #1277
2025-08-14 15:36:23 +02:00
Ralf Haferkamp 4bdb3bf70f proxy(sign_url_auth): Allow to verify server signed URLs
With the ocdav service being able to provided signed download URLs we
need the proxy to be able to verify the signatures.
This should also be a first step towards phasing out the weird ocs based
client side signed urls.

Related Tickets: #1104
2025-07-17 12:01:59 +02:00
Ralf Haferkamp 601bb4c955 cleanup(proxy): Remove misleading comment
The signedurl middleware is already adding the user to the context.
2025-07-17 12:01:59 +02:00
Ralf Haferkamp 8dd8943854 fix(proxy): Prevent panic when autoprovsioning user
After autoprovisioning a user, we need to get a reva token via
`auth-machine`. If that fails the code would panic because the logger
tried to access the `user` object returned from the GetUserByClaims
call. Which is `nil`in case failure.

Fixes #936
2025-06-12 11:54:23 +02:00
André Duffeck cbac5f1555 Switch to a different msgpack lib
The current one has a problem handling time.Time{} structs
2025-05-16 10:24:43 +02:00
Ralf Haferkamp dcf78f7f3d proxy(router): Allow to set some outgoing headers
This introduces the "additional_headers", "remote_user_header" and
"skip_x_access_token" config keys to allow configuring routes to
external services that require addtional headers to be set.

"remote_user_header": defines the name of a Header that will carry the
userid of the authenticated user on the outgoing request.

"additional_headers": defines a list of header names and values that will
be added to outgoing requests on matching routes.

"skip_x_access_token": when set to true the reva access token will not
be added to the outgoing request.

Needed for #206
2025-04-30 10:17:58 +02:00
Ralf Haferkamp 102e92fd73 appauth: Add token and user (with roles) to context
When successfully authenticating a user via apptoken, resolve the user's
roles and add the user and the token returned by the auth service to the
request context. Rely on the account_resolve middleware to add the reva
token to the outgoing request as the other auth middlewares do.
2025-04-30 10:17:58 +02:00
Ralf Haferkamp 95f28baa52 Use constant instead of repeating the "x-access-token" string over and over 2025-04-30 10:17:58 +02:00
Ralf Haferkamp 0716b40fa0 Adjust LDAP Schema for new name 2025-01-29 11:58:57 +01:00
André Duffeck e8d35e1280 Use the opencloud reva from now on 2025-01-21 11:16:38 +01:00
Jörn Friedrich Dreyer 747b2879d7 proxy
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2025-01-16 17:31:51 +01:00
Ralf Haferkamp 213e9663a9 Rename go-micro services 2025-01-16 09:45:46 +01:00
André Duffeck 8c8cdd9310 Adapt protobuf naming 2025-01-15 11:04:32 +01:00
Jörn Friedrich Dreyer b07b5a1149 use plain pkg module
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2025-01-13 16:42:19 +01:00
Jörn Friedrich Dreyer 8e028f17e9 change module name
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2025-01-13 09:58:18 +01:00