SurfSense Documentation
Connectors

Microsoft Teams

Connect your Microsoft Teams to SurfSense

Microsoft Teams OAuth Integration Setup Guide

This guide walks you through setting up a Microsoft Teams OAuth integration for SurfSense using Azure App Registration.

Step 1: Access Azure App Registrations

  1. Navigate to portal.azure.com
  2. In the search bar, type "app reg"
  3. Select "App registrations" from the Services results

Azure Portal Search

Step 2: Create New Registration

  1. On the App registrations page, click "+ New registration"

App Registrations Page

Step 3: Register the Application

Fill in the application details:

FieldValue
NameSurfSense
Supported account typesSelect "Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts"
Redirect URIPlatform: Web, URI: http://localhost:8000/api/v1/auth/teams/connector/callback

Click "Register"

Register Application Form

Step 4: Get Application (Client) ID

After registration, you'll be taken to the app's Overview page. Here you'll find:

  1. Copy the Application (client) ID - this is your Client ID
  2. Note the Directory (tenant) ID if needed

Application Overview

Step 5: Create Client Secret

  1. In the left sidebar under Manage, click "Certificates & secrets"
  2. Select the "Client secrets" tab
  3. Click "+ New client secret"
  4. Enter a description (e.g., SurfSense) and select an expiration period
  5. Click "Add"

Certificates & Secrets - Empty

  1. Important: Copy the secret Value immediately - it won't be shown again!

Certificates & Secrets - Created

Never share your client secret publicly or include it in code repositories.

Step 6: Configure API Permissions

  1. In the left sidebar under Manage, click "API permissions"
  2. Click "+ Add a permission"
  3. Select "Microsoft Graph"
  4. Select "Delegated permissions"
  5. Add the following permissions:
PermissionTypeDescriptionAdmin Consent
Channel.ReadBasic.AllDelegatedRead the names and descriptions of channelsNo
ChannelMessage.Read.AllDelegatedRead user channel messagesYes
offline_accessDelegatedMaintain access to data you have given it access toNo
Team.ReadBasic.AllDelegatedRead the names and descriptions of teamsNo
User.ReadDelegatedSign in and read user profileNo
  1. Click "Add permissions"

The ChannelMessage.Read.All permission requires admin consent. An admin will need to click "Grant admin consent for [Directory]" for full functionality.

API Permissions


Running SurfSense with Microsoft Teams Connector

Add the Microsoft Teams environment variables to your Docker run command:

docker run -d -p 3000:3000 -p 8000:8000 \
  -v surfsense-data:/data \
  # Microsoft Teams Connector
  -e TEAMS_CLIENT_ID=your_microsoft_client_id \
  -e TEAMS_CLIENT_SECRET=your_microsoft_client_secret \
  -e TEAMS_REDIRECT_URI=http://localhost:8000/api/v1/auth/teams/connector/callback \
  --name surfsense \
  --restart unless-stopped \
  ghcr.io/modsetter/surfsense:latest

On this page