Capacidades
- Knowledge. O texto de arquivos PDF, Word (
.docx), CSV e Markdown é enviado como documento, com nome, caminho (site, biblioteca e pastas) e link para abrir o arquivo no SharePoint. - Permissão da fonte. A permissão de cada arquivo é lida no SharePoint e guardada junto com o documento. No modo “Espelhar a fonte”, cada pessoa encontra nas buscas só os arquivos que ela pode abrir.
- Todas as bibliotecas do site. De cada site selecionado, o conector lê todas as bibliotecas de documentos, não só a padrão.
Recursos disponíveis
Cada biblioteca tem o próprio cursor. Uma biblioteca nova é lida inteira.
Permissões (ACL)
O conector lê a permissão de cada item na fonte e a guarda junto com o dado. Em Comportamento dos dados, você escolhe entre dois modos:
No modo “Espelhar a fonte”, marque Exigir login na fonte como prova de identidade. O Microsoft 365 identifica cada pessoa por um id próprio, não pelo e-mail, então a Strattum só reconhece quem se autenticou no Microsoft 365.
Como a fonte define acesso
No SharePoint, cada arquivo tem a própria lista de acesso. Ela reúne o que foi concedido direto no arquivo e o que ele herda da pasta, da biblioteca e do site. Uma concessão pode ser a uma pessoa, a um grupo do Microsoft Entra, a um grupo do SharePoint do site ou a um link de compartilhamento.Como a Strattum traduz o acesso
Para cada arquivo, o conector lê a lista de acesso no Microsoft Graph e grava os leitores assim:
A regra é tudo ou nada por arquivo. Se uma única concessão não pode ser traduzida, a lista inteira é descartada. Por exemplo: um relatório compartilhado com três pessoas e também com um link de compartilhamento fica sem leitor.
Os membros de cada grupo do Entra são lidos à parte, no Microsoft Graph, com a mesma App Registration. Grupos dentro de grupos entram na lista. Assim, quem está num grupo com acesso ao arquivo encontra o arquivo, desde que tenha vinculado a conta.
No vínculo de conta, o login acontece no endereço do tenant da conexão. A conta precisa existir no diretório desse tenant, convidados incluídos.
Quando a identidade não é encontrada
No modo “Espelhar a fonte”, quem não casa com nenhum leitor do arquivo não o encontra nas buscas. Isso acontece quando a pessoa não vinculou a conta Microsoft. Também acontece quando o acesso dela vem de um grupo cujos membros não puderam ser lidos. Um único grupo que falha na leitura, por exemplo porque falta a permissãoGroupMember.ReadBasic.All, faz a Strattum manter a lista de membros anterior de todos os grupos da conexão naquela rodada.
Um arquivo sem nenhum leitor não é indexado no modo “Espelhar a fonte”. Ele aparece como não indexado, com o motivo “Permissões não puderam ser resolvidas com segurança”. No modo “Aberto”, o arquivo é indexado mesmo sem leitores.
Quando a permissão é atualizada
A lista de acesso é lida no mesmo sync em que o arquivo é lido, com uma chamada ao Graph por arquivo. Numa sincronização incremental, o conector só relê arquivos cuja data de modificação (lastModifiedDateTime) mudou desde a última execução. Se o compartilhamento muda e a data de modificação não, o documento mantém a permissão antiga até o arquivo ser editado ou até a próxima verificação completa.
Se a leitura da permissão de um arquivo falha no modo “Espelhar a fonte”, a biblioteca não avança a data de corte e o arquivo é tentado de novo na execução seguinte.
Os membros dos grupos são relidos por uma rotina própria, a cada 10 minutos por padrão.
Pré-requisitos
- Um tenant Microsoft 365 com sites do SharePoint.
- Uma App Registration no Microsoft Entra (antigo Azure AD) com as permissões de aplicação
Sites.Read.AlleFiles.Read.Alldo Microsoft Graph, com consentimento de administrador. - O Tenant ID, o Client ID e um Client Secret dessa App Registration.
- Para o modo “Espelhar a fonte” com grupos: a permissão de aplicação
GroupMember.ReadBasic.All, ou uma superior, na mesma App Registration. - Para exigir login na fonte: um aplicativo do Entra ID com a permissão delegada
User.Read, de onde saem o Client ID e o Client Secret do login. Eles são informados à parte da credencial da conexão. - No Console, permissão para editar conectores e, para definir o acesso, permissão em configurações de ACL.
Autenticação e escopos
O conector age como a própria aplicação, sem um usuário. Ele pede um token ao Microsoft Entra pelo fluxo client credentials, com o escopohttps://graph.microsoft.com/.default, então vale o que o administrador consentiu na App Registration. Permissões delegadas não servem para a conexão.
1
Registre o aplicativo
No Microsoft Entra admin center, acesse Entra ID > App registrations e clique em New registration. Dê um nome e, em Supported account types, a Microsoft recomenda Single tenant only. Clique em Register e copie o Application (client) ID da tela Overview. O Tenant ID é o GUID do diretório ou o domínio dele, como
contoso.onmicrosoft.com.2
Conceda as permissões
Na App Registration, acesse API permissions > Add a permission > Microsoft Graph > Application permissions. Marque
Sites.Read.All e Files.Read.All, e também GroupMember.ReadBasic.All se for usar o modo “Espelhar a fonte”. Clique em Add permissions. Depois clique em Grant admin consent (o botão traz o nome do seu tenant) e confirme.3
Gere o client secret
Acesse Certificates & secrets > Client secrets > New client secret. Informe uma descrição e uma validade, e clique em Add. Copie o Value na hora: ele não é mostrado de novo. A Microsoft limita a validade a 24 meses e recomenda menos de 12.
Configuração no Console
1
Preencha a conexão
Nome do Conector (Opcional): um nome para identificar esta instância. O padrão é
Microsoft 365.Tenant ID (Obrigatório): o GUID ou o domínio do tenant. O vínculo de conta recusa common, organizations e consumers.Client ID (Obrigatório): o Application (client) ID da App Registration.Client Secret (Obrigatório): o Value do segredo.Clique em Conectar e listar sites. O Console autentica no Microsoft Graph, mostra quantos sites encontrou e só avança depois desse teste bem-sucedido. A lista serve para conferir as credenciais. Quais sites o conector lê é escolhido depois, no Data Catalog.2
Defina a frequência
Frequência de Sincronização (Obrigatório): o recomendado é A cada 6h (recomendado). Também há opções prontas, de 10 minutos a semanal, e Personalizado, para informar uma Expressão Cron. Os horários são em UTC. Veja Frequência de sync.
3
Configure o permissionamento
Quem pode usar este conector (Obrigatório): “Todos os usuários” ou “Apenas times específicos”. Na segunda opção, selecione os Times com acesso.Comportamento dos dados (Obrigatório): “Aberto” ou “Espelhar a fonte”.Exigir login na fonte como prova de identidade (Quando selecionado “Espelhar a fonte”): marque para que cada usuário vincule a conta Microsoft.URL de autenticação, Client ID e Client Secret (Quando selecionado o login na fonte, obrigatórios): os dados do aplicativo de login do Entra ID. A URL tem o formato
https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize, com o seu Tenant ID no lugar de TENANT_ID.Escopos (Opcional): o login pede openid profile User.Read quando o campo fica vazio.4
Revise e salve
Confira os campos e salve. O Console aceita salvar sem escolher sites, mas a sincronização fica aguardando configuração até existir pelo menos um site ou uma biblioteca.
5
Escolha os sites no Data Catalog
Abra o conector no Data Catalog, na seção Documentos no catálogo. Marque os sites que o conector deve ler e clique em Salvar seleção. Se o Console não conseguir listar os sites, o campo vira IDs de sites, com um ID por linha. Depois de salvar, o Console diz se a carga completa já foi agendada. Se não foi, execute a carga para atualizar os documentos.IDs de bibliotecas (Opcional): um ID de biblioteca ou de unidade (drive) do Microsoft Graph por linha, para ler uma unidade específica sem selecionar o site inteiro. A lista de sites do Console não inclui os sites pessoais do OneDrive, então um OneDrive só entra por este campo.
Como a sincronização funciona
O agendamento recomendado roda a cada 6 horas. A cada execução, o conector abre cada site selecionado, lista as bibliotecas dele e percorre as pastas, 200 itens por página, até o 10º nível de subpastas. Uma execução tem o limite de 2 horas. Leitura. A primeira execução lê todas as bibliotecas dos sites selecionados. As seguintes leem só os arquivos com data de modificação no SharePoint (lastModifiedDateTime) posterior à última execução de cada biblioteca. As pastas são sempre percorridas, porque a data de uma pasta não muda quando um arquivo dentro dela muda. Só a versão atual de cada arquivo é lida.
Cada arquivo. O documento é identificado pelo ID da biblioteca e do arquivo no SharePoint, e não pelo nome. Um arquivo editado e salvo mantém o ID, e o Knowledge troca o conteúdo antigo pelo novo, sem duplicar. Um arquivo apagado e enviado de novo, mesmo com o mesmo nome, ganha outro ID e entra como documento novo. Um arquivo fica fora do Knowledge quando:
- o formato não é suportado;
- tem mais de 50 MB;
- é um arquivo vazio, ou não tem texto, como um PDF escaneado;
- o download ou a leitura do texto falhou, como num PDF protegido por senha;
- no modo “Espelhar a fonte”, a permissão não pôde ser traduzida (veja “Permissões”).
API da fonte
O conector usa o Microsoft Graph v1.0. A autenticação passa pelo Microsoft Entra, com a biblioteca MSAL.
Rate limits. Limite da API: o SharePoint e o OneDrive medem o uso do Graph em unidades de recurso, por aplicativo e por tenant. Baixar um arquivo custa 1 unidade, listar uma pasta custa 2 e toda chamada de permissões custa 5. Por arquivo, o conector faz um download e uma leitura de permissões. Estourar o limite devolve
429 ou 503 com o cabeçalho Retry-After. Os valores padrão dependem do número de licenças do tenant e a Microsoft pode mudá-los (documentação):
Comportamento do conector: as chamadas são feitas uma de cada vez. Ao receber
429 ou 503, o conector espera o tempo do cabeçalho Retry-After, até 60 segundos. Sem o cabeçalho, espera 2 segundos e dobra a cada tentativa, também até 60. Depois de 5 repetições, a falha segue para o item: uma pasta que não lista é pulada, um arquivo que não baixa fica de fora e uma permissão que não lê deixa o arquivo sem leitor. Nos três casos, a biblioteca não avança a data de corte (no modo “Aberto”, a permissão não lida não a segura). Outros erros HTTP, como 401 e 403, não são repetidos. Se a extração falha por inteiro, a plataforma a refaz até 3 vezes, depois de 1, 2 e 4 minutos.
Referência oficial: https://learn.microsoft.com/en-us/graph/api/resources/driveitem
Limitações conhecidas
- Só entram arquivos PDF, Word (
.docx), CSV e Markdown. Excel, PowerPoint, o formato Word antigo (.doc), imagens e outros tipos são ignorados, sem aviso e sem aparecer na lista de documentos ignorados. - Arquivos com mais de 50 MB não são lidos.
- PDF escaneado (só imagem) não tem texto extraído, porque não há OCR. PDF protegido por senha ou corrompido não é lido.
- Em arquivos Word, cabeçalhos e rodapés não são extraídos.
- Arquivo vazio (0 bytes) é ignorado.
- O histórico de versões do SharePoint não é indexado. Só a versão atual de cada arquivo entra no Knowledge.
- Arquivo apagado no SharePoint continua no Knowledge até a próxima verificação completa da Janela de manutenção.
- Uma mudança de permissão que não altera a data de modificação do arquivo só chega ao Knowledge na próxima verificação completa.
- No modo “Espelhar a fonte”, um arquivo com concessão a um grupo do SharePoint do site, a um link de compartilhamento ou a um aplicativo não é indexado. No modo “Aberto”, ele é indexado.
- No modo “Espelhar a fonte”, quem não vinculou a conta Microsoft não encontra nenhum arquivo. A Strattum não deduz a pessoa pelo e-mail.
- Se a leitura dos membros de um único grupo do Entra falha, nenhuma lista de membros é atualizada naquela rodada.
- Os campos de filtro de pastas e de profundidade não existem no Console. Subpastas além do 10º nível não são lidas.
- Uma biblioteca informada por ID aparece com o caminho começando em
OneDrive, sem o nome do site. - A lista de sites do Console não inclui os sites pessoais do OneDrive. Um OneDrive só entra pelo campo IDs de bibliotecas.
- A conexão usa permissões de aplicação. Permissões delegadas, por usuário, não são o fluxo suportado.
- O client secret expira. Quando isso acontece, a sincronização falha até você gerar outro segredo e informá-lo em Editar > Conexão, junto com o Tenant ID e o Client ID.
Troubleshooting
Próximos passos
Knowledge
Veja como buscar nos documentos que o conector envia.
Data Catalog
Conheça o catálogo, onde você escolhe os sites que o conector lê.
Atualização e remoção de documentos
O que acontece no Knowledge quando um arquivo é editado, substituído ou apagado.
Desenvolvimento local
Desenvolvimento local
No ambiente local, as credenciais do conector são cadastradas pelo Console (veja Desenvolvimento local). O segredo fica no cofre de credenciais da instância, e não no
.env.A sincronização lê estas chaves de credencial do conector:O Console não preenche
M365_INCLUDE_FOLDERS, M365_EXCLUDE_FOLDERS nem M365_MAX_DEPTH. Quem executa a classe do conector direto, fora do Console, pode passá-los a authenticate() como include_folders, exclude_folders e max_depth.