You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建支持SSO的Teams标签页:指定租户访问限制的HTTP头配置位置咨询

解决Teams标签页SSO租户限制的HTTP头放置问题

我刚好做过类似的租户限制配置,来给你明确这两个HTTP头该放在哪里:

核心作用回顾

先快速理清楚这两个头的作用,避免配置出错:

  • Restrict-Access-To-Tenants:指定允许访问标签页的租户ID列表,多个ID用逗号分隔(不要加空格)
  • Restrict-Access-Context:必须设置为urn:microsoft:teams,用来限定限制规则仅在Teams上下文生效,否则租户限制不会起作用

具体放置位置

你需要在以下几个关键请求的响应头中添加这两个字段:

1. 标签页主页面的响应

当用户在Teams中打开你的标签页时,Teams会向你的标签页URL发起GET请求,你的后端服务在返回标签页HTML页面的响应里,必须带上这两个头。

举个Node.js/Express的示例代码:

const express = require('express');
const path = require('path');
const app = express();

app.get('/teams-tab', (req, res) => {
  // 设置租户限制头
  res.set('Restrict-Access-To-Tenants', 'xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,yyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy');
  res.set('Restrict-Access-Context', 'urn:microsoft:teams');
  // 返回标签页HTML
  res.sendFile(path.join(__dirname, 'public/teams-tab.html'));
});

app.listen(3000, () => console.log('Server running on port 3000'));

2. 标签页调用的API接口响应(可选但推荐)

如果你的标签页会调用后端API接口,为了防止非允许租户的用户直接通过API访问数据,建议在所有API接口的响应头中也添加这两个限制头。

比如API接口的示例:

app.get('/api/data', (req, res) => {
  res.set('Restrict-Access-To-Tenants', 'xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,yyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy');
  res.set('Restrict-Access-Context', 'urn:microsoft:teams');
  res.json({ data: '仅限指定租户访问的内容' });
});

3. 静态资源响应(可选)

如果你的标签页依赖静态资源(如JS、CSS、图片),虽然不是强制要求,但为了更全面的限制,也可以在这些资源的响应头中添加相同的租户限制规则。

注意事项

  • 租户ID必须是准确的Azure AD租户ID,不要写错
  • 两个头必须同时设置,缺一不可,否则限制规则不会生效
  • 测试时可以用非允许租户的账号打开标签页,Teams会直接提示“访问被限制”,验证配置是否生效

内容的提问来源于stack exchange,提问作者Ibra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:48:11