Este repositório contém código de exemplo / prova de conceito (PoC) com o objetivo de demonstrar como implementar o fluxo On-Behalf-Of (OBO) com Microsoft Graph para listar documentos do SharePoint em nome do usuário autenticado, utilizando .NET 8, Microsoft Entra ID e Microsoft Graph.
Este projeto foi criado para fins de aprendizado, avaliação e experimentação.
Este repositório contém código de exemplo e não é destinado para uso em produção.
Antes de utilizar qualquer parte deste projeto em um ambiente produtivo ou crítico, é essencial revisar, validar, proteger e adaptar o código conforme os requisitos da sua organização, incluindo:
- Segurança
- Escalabilidade
- Confiabilidade
- Monitoramento
- Observabilidade
- Custos
- Conformidade
Leia também:
- Fluxo On-Behalf-Of (OBO) com Microsoft Entra ID para aquisição de token delegado
- Listagem de documentos do SharePoint via Microsoft Graph em nome do usuário autenticado
- Resolução automática de site, biblioteca ou pasta a partir de uma URL do SharePoint
- Autenticação com certificado (Shared Key para PoC, Managed Identity recomendado para produção)
- .NET 8 SDK
- Uma App Registration no Microsoft Entra ID com permissões delegadas (
Sites.Read.All,Files.Read.All) - Um certificado (self-signed para lab ou CA-issued para produção)
- Acesso a um site/biblioteca do SharePoint
- Clone este repositório
- Gere o certificado de demo:
.\scripts\New-OboDemoCertificate.ps1 -PfxPassword "ChangeThisPassword!"
- Configure o
.envna raiz do repositório:AZURE_TENANT_ID: GUID do tenantAZURE_CLIENT_ID: Client ID da app registrationAZURE_CERTIFICATE_THUMBPRINT: Thumbprint do certificadoSHAREPOINT_URL: URL do site/biblioteca/pasta do SharePoint
- Execute em ambiente não produtivo:
dotnet run --project .\src\OboWebDemo\OboWebDemo.csproj --launch-profile https
- Acesse
https://localhost:7011e valide o comportamento antes de qualquer adaptação
- OBO de verdade pressupõe que o access token do usuário chega a um middle-tier separado. Aqui a demonstração foi simplificada para uma única web app confidencial.
- O fluxo usa permissão delegada — só lista documentos que o usuário autenticado realmente pode acessar.
- Se o tenant bloquear consentimento do usuário, o admin precisa conceder consentimento para
Sites.Read.AlleFiles.Read.All. - O certificado local precisa conter chave privada. O upload no Entra ID usa apenas o
.cerpúblico.
Este projeto não possui SLA nem suporte oficial.
Veja SUPPORT.md para detalhes.
O uso deste projeto está sujeito aos termos descritos em DISCLAIMER.md.
Contribuições podem ser aceitas a critério do mantenedor.
Os nomes e serviços da Microsoft são utilizados apenas para fins descritivos.
Este projeto não é afiliado, endossado ou suportado oficialmente pela Microsoft.
O uso de marcas da Microsoft não deve sugerir qualquer tipo de parceria ou suporte oficial.
Issue and pull request creation is restricted to collaborators. See CONTRIBUTING.md for details.