能否使用单个Azure应用实现所有租户/子域名的Teams SSO?
单个Azure多租户应用实现多子域名Teams SSO方案
可以用单个Azure多租户应用实现所有租户/子域名的Teams SSO,无需为每个租户单独创建Azure应用,具体方案如下:
核心结论
不需要为每个租户创建新Azure应用,通过扩展现有多租户应用的配置即可支持所有子域名的Teams SSO。
关键配置说明
1. webApplicationInfo.resource字段要求
该字段的值必须匹配Azure AD应用注册中已配置的标识符URI(Identifier URIs),并非强制包含域名,但为了和子域名绑定,需要为每个子域名添加对应的标识符URI。
2. 为Azure应用添加多标识符URI
在Azure AD应用注册的配置页面:
- 进入“概述”→“添加标识符URI”
- 依次添加各租户子域名对应的URI:
api://a.site.com/<Guid> api://b.site.com/<Guid> api://c.site.com/<Guid> - 保留原有默认的
api://<Guid>作为备用标识符
3. 动态配置Teams SSO的resource值
在Teams应用的逻辑中,根据当前访问的子域名动态设置webApplicationInfo.resource:
- 如果是Teams Tab应用,可在前端加载时获取当前子域名,将resource设置为对应子域名的标识符URI
- 如果是发布到租户的Teams应用包,可针对每个租户生成包含对应resource的manifest文件后再安装
4. 配置全量回调URL
在Azure AD应用注册的“认证”→“添加平台”→“Web”中,添加所有子域名对应的回调地址:
https://a.site.com/auth/callback https://b.site.com/auth/callback https://c.site.com/auth/callback
注意事项
- 确保所有添加的标识符URI在Azure AD中唯一,多租户应用下只要属于你的应用范围内唯一即可
- Teams应用的安装需确保对应租户的实例使用正确的resource值,避免跨租户认证冲突
内容的提问来源于stack exchange,提问作者dennis_n
相关产品推荐
相关产品推荐

