Linus Rath
022b83c005
feat: let plugins use accounts and API keys through the server without seeing them
...
Plugins that talk to Nextcloud, Paperless or an AI provider used to need
the password or key in their own settings, readable by the plugin and
stored in the browser. A plugin can now declare credentials in its
manifest and send requests "with credential X" through the server:
- `credentials` in the manifest: admin scope (secret and server from the
admin config) or user scope (the user connects an account; the server
address is fixed or chosen by the user)
- `/api/plugin-secrets`: the user's connected accounts, encrypted per
mail account under `PLUGIN_SECRETS_DIR`; listing never returns secrets
- `/api/plugin-proxy`: adds the secret and forwards only to the
credential's own origin, through the SSRF guard unless the admin set
the server up or listed it in `PLUGIN_PROXY_PRIVATE_ORIGINS`; no
redirects or WebDAV moves to other servers, streamed bodies capped at
512 MB up and 2 GB down, 300 requests a minute per plugin, 8 at once
per user, and one audit line per request without paths or bodies
- a capture mode that stores a secret from a sign-in response (Nextcloud
Login Flow v2) and removes it from what the plugin gets back
2026-10-14 04:00:36 +02:00
..
2026-10-14 04:00:36 +02:00
2026-10-14 04:00:36 +02:00
2026-10-14 04:00:36 +02:00
2026-09-20 19:59:37 +02:00
2026-10-12 07:36:46 +02:00
2026-10-11 19:16:51 +02:00
2026-10-13 13:36:51 +02:00
2026-09-30 14:23:09 +02:00
2026-10-13 16:32:25 +02:00
2026-09-30 12:17:25 +02:00
2026-10-14 03:14:29 +02:00
2026-10-14 04:00:36 +02:00
2026-08-06 16:47:20 +02:00
2026-09-30 08:54:14 +02:00
2026-10-13 13:36:51 +02:00
2026-10-06 23:31:03 +02:00
2026-10-13 13:36:51 +02:00
2026-09-26 15:15:23 +02:00
2026-08-29 12:46:39 +02:00
2026-08-25 19:16:20 +02:00
2026-10-08 14:32:39 +02:00
2026-10-09 10:54:38 +02:00
2026-10-09 10:54:38 +02:00
2026-10-09 10:54:38 +02:00
2026-10-05 10:36:20 +02:00
2026-09-30 09:02:58 +02:00
2026-10-13 13:36:51 +02:00
2026-09-10 10:45:45 +02:00
2026-06-19 12:31:07 +02:00
2026-09-19 00:53:53 +02:00
2026-09-19 13:01:07 +02:00
2026-10-13 15:56:10 +02:00
2026-08-16 21:18:57 +02:00
2026-10-02 22:56:16 +02:00
2026-10-05 23:09:48 +02:00
2026-09-03 22:12:15 -07:00
2026-08-29 11:03:48 +02:00
2026-04-21 17:42:52 +02:00
2026-04-16 16:54:09 +02:00
2026-09-30 14:21:20 +02:00
2026-09-09 18:27:01 +02:00
2026-09-26 20:47:13 +02:00
2026-09-09 16:38:55 +02:00
2026-08-25 18:50:50 +02:00
2026-10-11 18:43:04 +02:00
2026-10-13 13:13:56 +02:00
2026-04-12 01:10:28 +02:00
2026-09-01 20:55:13 +02:00
2026-10-02 16:31:44 +02:00
2026-10-13 13:36:51 +02:00
2026-09-21 20:52:02 +02:00
2026-10-11 18:04:26 +00:00
2026-10-11 18:53:15 +02:00
2026-10-11 22:19:05 +02:00
2026-08-25 19:36:04 +02:00
2026-09-23 19:41:44 +02:00
2026-10-07 19:04:15 +02:00
2026-10-11 18:43:04 +02:00
2026-06-25 01:04:26 +02:00
2026-05-06 20:07:36 +02:00
2026-05-22 15:22:33 +02:00
2026-09-24 10:00:01 +02:00
2026-10-14 01:43:43 +02:00
2026-10-14 04:00:36 +02:00
2026-08-20 16:49:31 +02:00
2026-09-22 20:54:01 +02:00
2026-09-30 15:08:31 +02:00
2026-10-08 10:15:20 +02:00
2026-08-20 14:21:41 +02:00
2026-07-29 11:41:34 +12:00
2026-10-11 20:00:47 +02:00
2026-09-24 21:15:22 +02:00
2026-05-18 16:01:29 +02:00
2026-10-13 14:53:23 +02:00
2026-10-13 13:36:51 +02:00
2026-07-21 23:26:51 +02:00
2026-08-06 18:44:14 +02:00
2026-07-29 17:18:38 +02:00
2026-07-29 17:18:42 +02:00
2026-09-26 20:24:23 +02:00
2026-10-13 13:36:51 +02:00
2026-09-18 22:16:57 +02:00
2026-09-19 00:53:53 +02:00
2026-09-17 23:54:33 +02:00
2026-09-19 00:53:53 +02:00
2026-02-16 18:51:30 +01:00
2026-06-24 19:32:13 +02:00
2026-09-17 20:55:39 +02:00
2026-09-29 20:28:39 +02:00
2026-10-02 23:04:28 +02:00
2026-07-04 14:52:26 +02:00
2026-08-29 18:11:50 +02:00
2026-10-14 03:40:04 +02:00
2026-10-14 03:25:53 +02:00
2026-10-14 02:33:45 +02:00
2026-10-14 03:04:17 +02:00
2026-10-14 03:16:25 +02:00
2026-10-14 02:21:45 +02:00
2026-09-26 16:55:34 +02:00
2026-10-14 04:00:36 +02:00
2026-10-14 01:47:58 +02:00
2026-09-30 19:03:34 +02:00
2026-08-16 23:04:22 +02:00
2026-07-22 19:17:23 +02:00
2026-06-25 00:25:28 +02:00
2026-04-09 22:13:08 +02:00
2026-09-30 22:43:59 +02:00
2026-09-26 15:45:59 +02:00
2026-09-23 13:40:01 +02:00
2026-09-23 13:40:01 +02:00
2026-08-25 21:13:34 +02:00
2026-09-09 19:27:08 +02:00
2026-08-16 21:12:21 +02:00
2026-08-06 19:19:18 +02:00
2026-10-11 20:03:42 +02:00
2026-10-11 19:50:40 +02:00
2026-09-29 20:15:14 +02:00
2026-08-29 17:47:23 +02:00
2026-08-25 20:09:18 +02:00
2026-10-13 13:36:51 +02:00
2026-10-13 15:55:54 +02:00
2026-05-09 17:37:41 +02:00
2026-05-31 15:52:27 +02:00
2026-10-13 15:55:54 +02:00
2026-09-19 13:32:41 +02:00
2026-10-06 23:26:27 +02:00
2026-10-11 19:41:48 +02:00
2026-10-11 19:41:48 +02:00
2026-09-26 15:31:05 +02:00
2026-05-06 20:07:36 +02:00
2026-08-18 15:48:05 +02:00
2026-10-07 08:26:51 +03:00
2026-10-06 22:14:29 +02:00
2026-10-13 13:36:51 +02:00
2026-10-06 22:14:29 +02:00
2026-08-06 18:23:21 +02:00
2026-09-26 14:36:02 +02:00
2026-09-19 13:32:41 +02:00
2026-09-26 14:36:02 +02:00
2026-08-16 02:19:04 +02:00
2026-09-30 09:02:58 +02:00
2026-10-13 13:36:51 +02:00
2026-09-26 14:15:10 +02:00
2026-10-06 23:29:42 +02:00
2026-10-07 19:28:44 +02:00
2026-08-23 19:44:56 +06:00
2026-10-13 13:36:51 +02:00
2026-09-26 14:41:14 +02:00
2026-08-31 23:53:24 +02:00
2026-10-14 00:15:08 +02:00
2026-05-21 23:35:58 +02:00
2026-10-10 19:24:10 +02:00