Commit Graph

84 Commits

Author SHA1 Message Date
Micke Nordin dec38e5307 fix(OCM): Remove comment meant only for OCP APIs
Signed-off-by: Micke Nordin <kano@sunet.se>
2026-06-18 11:56:54 +02:00
Micke Nordin 4d5841761f fix(cloud_federation_api): accept multi-protocol share envelopes
Shares using the OCM multi-protocol envelope (name multi, with the secret carried in a sibling protocol entry such as webdav) were rejected with Missing sharedSecret in protocol. Scan every protocol entry for the shared secret during validation, resolve the secret from the matching entry, and let the files provider serve the webdav entry of a multi envelope. Covers the file and folder resource types.

Signed-off-by: Micke Nordin <kano@sunet.se>
2026-06-17 11:01:19 +02:00
Enrique Pérez Arnaud 3956c4e9be feat(cloud_federation_api): accept new protocol envelope and delegate validation
Accept both the legacy options.sharedSecret envelope and the new
protocol[name].sharedSecret form. Preserve the original cloud ID so the
factory can discover capabilities, then reset shareWith to the local
username for user lookup.

Delegate per-protocol validation to providers via the new
IValidationAwareCloudFederationProvider interface, with split exception
handling: BadRequestException -> 400, ProviderCouldNotAddShareException
-> the exception's own HTTP status (501 fallback).

In the notification handler, fall back to looking up the refresh token
via OcmTokenMapMapper when the access token cannot identify the federation.

Co-authored-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Enrique Pérez Arnaud <enrique@cazalla.net>
2026-06-17 11:01:13 +02:00
Enrique Pérez Arnaud 789ff6a8a3 feat(cloud_federation_api): add token exchange endpoint issuing JWT access tokens
Co-authored-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Enrique Pérez Arnaud <enrique@cazalla.net>
2026-06-17 11:01:11 +02:00
Andy Scherzinger 51a7ee1d0f Merge pull request #61310 from nextcloud/fix/noid/ocm-add-share-validation
fix(ocm-add-share): adjust domain validation
2026-06-16 20:34:03 +02:00
Micke Nordin 2beb626995 feat(OCM): Add event for received notifications
OCM is standardizing and expanding the use of notifications and having
an event for acting on in apps will be very useful.

Signed-off-by: Micke Nordin <kano@sunet.se>
2026-06-16 11:30:00 +02:00
Cristian Scheid 88df72a661 feat(ocm-add-share): add validation to detect idn homograph attacks
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-06-16 10:21:24 +02:00
Côme Chilliet 1ab09ec753 chore: Apply new coding standard to all files
The diff can be checked using: git diff --ignore-all-space --ignore-blank-lines
To see only the changes not related to blank lines.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-01 13:46:39 +02:00
Micke Nordin c753aad9e3 refactor(ocm): expose confirmRequestOrigin as a function on ocmDiscoveryService
Apps implementing OCM endpoints via OCMEndpointRequestEvent (e.g.
SUNET/nextcloud-ocm_request_share for request-share, nextcloud/contacts
for invite-accepted) need to apply the same identity check that the
built-in addShare and receiveNotification handlers apply, so it makes
sense to make it publicly accessible.

It also allows us to refactor RequestHandlerController::confirmSignedOrigin
to use the new public method and drop the confirmNotificationIdentity helper.

Signed-off-by: Micke Nordin <kano@sunet.se>
2026-05-27 11:03:55 +02:00
Ferdinand Thiessen d8e8703796 chore: add missing Override attribute to app code
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-28 21:29:28 +02:00
Joas Schilling 63a1a083f8 Merge pull request #59721 from nextcloud/bugfix/noid/throttle-ocm-requests
fix(ocm): Correctly track OCM requests
2026-04-20 13:41:50 +02:00
Joas Schilling a51e58e800 fix(federation): Also sign requests with NCU providers
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-04-20 12:47:02 +02:00
Joas Schilling f4f93ed281 fix(ocm): Correctly track OCM requests
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-04-20 11:52:17 +02:00
Maxence Lange 42d745e17b fix(ocm): empty response
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2026-01-12 15:22:08 -01:00
Maxence Lange 327d691c23 feat(signed-request): moving out of unstable
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2026-01-09 20:16:24 -01:00
Maxence Lange 6af64a5495 feat(ocm): event on ocm discovery and ocm request
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2026-01-07 17:54:26 -01:00
Maxence Lange 4b684897ed fix(ocm): fully disable signed request on config
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-12-17 18:55:14 -01:00
Carl Schwan 3bdb344224 perf(external-sharing): Port to Entity and SnowflakeId
This removes all the read after write and we don't need to queries all
the time the same share in the same request anymore.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-16 10:40:07 +01:00
Micke Nordin a171fbf318 fix(cloud-federation-api): align inviteAccepted parameter naming with spec
- Rename method parameter from `userId` to `userID`.
- Update log message and `setRecipientUserId` call to use new variable.
- Without this change, we can not accept invites.

Signed-off-by: Micke Nordin <kano@sunet.se>
2025-10-27 12:28:09 +01:00
Maxence Lange a867ff8b27 feat(migration-attributes): missing attributes
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-09-03 13:55:02 -01:00
Maxence Lange fa60488ee7 feat(ocm): split ocm discovery and capacities
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-08-20 11:57:01 -01:00
Ferdinand Thiessen 5981b7eb51 chore: apply new CSFixer rules
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>

# Conflicts:
#	apps/settings/lib/SetupChecks/PhpOpcacheSetup.php
2025-07-01 16:26:50 +02:00
Micke Nordin 4d4b886607 fix(OCM-invites): Use the correct way of getting the email
It seems primary email can sometimes be empty, even if the user has an email set.

Signed-off-by: Micke Nordin <kano@sunet.se>
2025-06-12 17:00:13 +02:00
Micke Nordin 623f2f0240 feat(OCM-invites): Implementation of invitation flow
This patchset:
* implements the /invite-accepted endpoint
* adds capabilities and inviteAceptDialog to the discovery
* adds a FederatedInviteAcceptedEvent

https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1invite-accepted/post

Co-authored-by: Anna <anna@nextcloud.com>
Co-authored-by: Côme Chilliet <come.chilliet@nextcloud.com>
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Co-authored-by: Navid Shokri <navid.pdp11@gmail.com>
Signed-off-by: Micke Nordin <kano@sunet.se>
2025-06-12 11:20:26 +02:00
Joas Schilling 4fc5eaeff0 fix(federation): Allow federation file sharing when federation app is disabled
The app id might be misleading, the federation app is for syncing addressbooks
with trusted servers. It is not always enabled and show not have to be.

Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-24 13:03:14 +02:00
Ferdinand Thiessen 63052522a2 perf(cloud_federation_api): only provide capabilities if needed
The capabilities can be quite expensive (e.g. on ARM board it takes 1s
per request only for the capabilities).
Also they are not used by the webui so they should not be included in
initial state.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-04 17:07:24 +02:00
Ferdinand Thiessen b9f9190894 fix(ocm): publicKey can be disabled so capabilities do not match
When the public key feature is disabled null is returned for
`publicKey`. So in this case we need to adjust the capabilities
and return type of `jsonSerialize()`.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-03-21 09:15:55 +01:00
Maxence Lange abd24f9bef fix(signed-request): use share owner on reshare
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2024-12-05 19:58:13 -01:00
Maxence Lange ac470184e7 fix(ocm): get details from sharedSecret from provider
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2024-12-05 14:51:04 -01:00
Maxence Lange 4df3155523 fix(signed-request): removing unstable from public
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2024-12-04 09:30:55 -01:00
Maxence Lange 4b06620055 feat(signatory): switch to qbmapper
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2024-12-04 09:30:55 -01:00
Maxence Lange 862a411118 fix(ocm): simpler code
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2024-12-04 09:30:55 -01:00
Maxence Lange f08d053290 fix(ocm): switching to IdentityProof
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2024-12-04 09:30:55 -01:00
Maxence Lange 4591430c9c feat(ocm): signing ocm requests
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2024-12-04 09:30:55 -01:00
provokateurin 77114fb327 fix(OpenAPI): Adjust array syntax to avoid ambiguities
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-11-05 09:58:11 +01:00
provokateurin 381077028a refactor(apps): Use constructor property promotion when possible
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-10-21 12:37:59 +02:00
Côme Chilliet 1580c8612b chore(apps): Apply new rector configuration to autouse classes
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-10-15 10:40:25 +02:00
provokateurin 9836e9b164 chore(deps): Update nextcloud/coding-standard to v1.3.1
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-19 14:21:20 +02:00
Daniel Kesselberg af6de04e9e style: update codestyle for coding-standard 1.2.3
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:34:58 +02:00
Joas Schilling 15a530008f fix(federation): Return the used userID to allow the inviting server to react to the famous mapUid result
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-13 14:30:16 +02:00
provokateurin 8db6cfca1c refactor(cloud_federation_api): Replace security annotations with respective attributes
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-07-27 22:47:40 +02:00
Andy Scherzinger 9d4b944098 chore: Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-05-27 20:11:22 +02:00
Côme Chilliet ec5133b739 fix: Apply new coding standard to all files
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-04-02 14:16:21 +02:00
provokateurin c5808d0d10 refactor: Configure OpenAPI scopes
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-01-18 16:23:36 +01:00
Joas Schilling aa5f037af7 chore: apply changes from Nextcloud coding standards 1.1.1
Signed-off-by: Joas Schilling <coding@schilljs.com>
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2023-11-23 10:36:13 +01:00
jld3103 755de1e0b5 refactor: Rename OpenAPI type aliases to their namespaces
Signed-off-by: jld3103 <jld3103yt@gmail.com>
2023-11-02 11:37:15 +01:00
Joas Schilling fc445a2eaa feat(OCM): Add a way for apps to create a new IOCMResource
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-10-13 08:38:19 +02:00
Joas Schilling b246d51cbc fix(OCM): Make the OCM provider stateful so apps can add resources
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-10-13 08:34:42 +02:00
Maxence Lange 8b9e7e235d ocm controller
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2023-09-20 08:23:45 -01:00
jld3103 6843bcd029 cloud_federation_api: Add OpenAPI spec
Signed-off-by: jld3103 <jld3103yt@gmail.com>
2023-07-13 07:20:55 +02:00