Acessando e alterando dados de calendário no Nextcloud

Descrever o problema/erro/pergunta

Depois de mudar de Microsoft para Nextcloud, tentamos configurar um fluxo de trabalho usando n8n para sincronizar calendários do Outlook/Teams com nosso Nextcloud Calendar (o app em destaque) e estamos enfrentando o seguinte problema:
Para ler eventos de e escrever eventos em nossos calendários Nextcloud, a única opção que conhecemos é usar requisições HTTP com Autenticação Básica, o que parece um tanto impraticável, já que exigiria coletar credenciais de login de cada usuário.
Alguém conhece uma forma de contornar este problema? Por exemplo, um usuário administrador que tenha permissões de leitura/escrita nos calendários de outros usuários?
Atenciosamente,
Frederic

Qual é a mensagem de erro (se houver)?

Por favor, compartilhe seu fluxo de trabalho

(Selecione os nós na sua tela e use os atalhos de teclado CMD+C/CTRL+C e CMD+V/CTRL+V para copiar e colar o fluxo de trabalho.)

Compartilhe a saída retornada pelo último nó

Informações sobre sua configuração n8n

  • Versão do n8n:
  • Banco de dados (padrão: SQLite):
  • Configuração n8n EXECUTIONS_PROCESS (padrão: own, main):
  • Executando n8n via (Docker, npm, n8n cloud, aplicativo desktop):
  • Sistema operacional:

Oi @FredericDomke Bem-vindo!
Dois pontos separados aqui. Primeiro, Basic Auth para CalDAV não significa coletar a senha de login real de ninguém: senhas de aplicativo do Nextcloud são tokens por usuário, por dispositivo, criados em Configurações pessoais > Segurança > Dispositivos e sessões, e eles autenticam via Basic Auth exatamente como um cliente CalDAV normal. Eles são revogáveis individualmente e nunca expõem a senha da conta, portanto essa é a forma segura do que você já está fazendo. O endpoint do calendário é o caminho DAV, não o nó do Nextcloud (que cobre apenas arquivos e usuários): https://your-nextcloud/remote.php/dav/calendars///

Segundo, não há uma credencial de administrador integrada que leia e escreva de forma transparente o calendário pessoal de cada usuário. A forma suportada de executar isso a partir de uma única credencial é compartilhamento de calendário com uma conta de serviço:

  1. Crie um usuário Nextcloud dedicado, por exemplo n8n-sync.
  2. Faça com que cada usuário compartilhe seu calendário com n8n-sync e marque “pode editar” (ou mova os calendários que você sincroniza para calendários compartilhados/de grupo que a conta de serviço possui).
  3. Gere uma senha de aplicativo para n8n-sync.
  4. No n8n, use uma única credencial HTTP Request (Basic Auth, usuário n8n-sync + aquela senha de aplicativo) e acesse /remote.php/dav/calendars/n8n-sync// tanto para leituras (REPORT/PROPFIND) quanto para gravações (PUT).

Isso fornece uma credencial cobrindo cada calendário compartilhado, sem senhas por usuário para coletar.