# Microsoft 365 / Teams 登录集成

导入 Microsoft 365 企业员工，让他们从 Teams 免登 AskTable。

使用指南 · 模块: organization · 管理人员 · 部署形态：Cloud / 私有部署 · 已确认产品版本：资料未说明 · 来源：编辑整理 · 按产品 4.2.76-1110（CLI 0.0.18）核对；私有部署的旧版本可能不包含近期变化。

Microsoft 365 / Teams 集成让已导入的员工在 Teams 中打开 AskTable 个人应用时，用企业身份直接登录。只有已导入、账号和组织成员状态正常的员工可以登录，首次登录不会创建账号。

由组织 Owner 或 Admin 在 AskTable 中配置，另需 Microsoft 365 企业管理员在 Entra 和 Teams 中完成设置。入口：「个人设置」→「登录集成」→「Microsoft 365 / Teams」。

## 适用范围

- 只支持 Microsoft 365 全球商业云（`login.microsoftonline.com` 与 `graph.microsoft.com`），不支持世纪互联和政府云租户。
- AskTable 需要使用员工能访问的 HTTPS 域名，后端需要能访问上述微软接口。
- 只能在 Teams 桌面端、网页端和移动端中使用，不提供普通浏览器的 Microsoft 登录入口。
- 只导入已启用的 Member 员工，不导入来宾和个人微软账号。

## 步骤

**注册 Entra 应用**

在 [Microsoft Entra 管理中心](https://entra.microsoft.com/)的「应用注册」中创建单租户应用，记下「目录（租户）ID」和「应用程序（客户端）ID」。

在「证书和密码」中创建客户端密码，保存密码的「值」（不是密码 ID）。密码到期或轮换后，需要回到 AskTable 更新。

**授权读取员工目录**

在「API 权限 → 添加权限 → Microsoft Graph → 应用程序权限」中添加 `User.Read.All`，由企业管理员「授予管理员同意」。

AskTable 只读取员工的对象 ID、显示名、启用状态和用户类型，不读取手机号，也不按邮箱合并账号。导入哪些员工仍由管理员逐个选择。

**在 AskTable 启用**

点「启用」，填写 Tenant ID、Client ID 和 Client Secret。启用不会验证微软凭据，也不会自动导入员工。

**配置 Teams 单点登录**

在 Entra 应用的「公开 API」中：

- 设置 AskTable 详情页显示的 Application ID URI（格式为 `api://你的AskTable域名/客户端ID`）。
- 添加委托范围 `access_as_user`。
- 在应用清单中把 `api.requestedAccessTokenVersion` 设为 `2`。
- 为 `access_as_user` 预授权 Teams 客户端：桌面与移动端 `1fec8e78-bce4-4aaf-ab1b-5451cc387264`，网页端 `5e3ce6c0-2b1f-4285-8d4b-75ee78787346`。

具体界面见[微软 Teams SSO 应用注册文档](https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/tab-sso-register-aad)。

**创建 Teams 个人应用**

在 [Teams Developer Portal](https://dev.teams.microsoft.com/) 创建个人应用，添加「个人范围的静态标签页」：

- 内容地址：AskTable 详情页的完整「应用首页地址」。Cloud 地址中的 `org_id` 不能删除；私有部署有路径前缀时也要完整保留。
- 有效域名：AskTable 的主机名。
- SSO：填写相同的 Client ID 和 Application ID URI。

发布到企业，并按企业策略批准和分配应用。如果部署的反向代理禁止页面被 iframe 嵌入，需要允许 Teams 加载 AskTable。

**导入员工并验证**

回到 AskTable 点「导入成员」，选择员工提交。用已导入的员工从 Teams 打开个人应用，确认进入正确的组织。企业策略可能要求授权或多因素验证，首次打开时不一定完全无提示。

Tenant ID 保存后不能直接修改，更换企业前先断开集成。断开后账号、成员和历史保留，但该组织的 Teams 登录立即失效。通用规则见[企业集成登录](https://docs.asktable.com/organization/enterprise-login)。导入后还需分配[项目角色](https://docs.asktable.com/organization/members-and-roles)和[数据权限](https://docs.asktable.com/permissions)。

## 常见问题

| 现象          | 检查                                                        |
| ----------- | --------------------------------------------------------- |
| 读取员工目录失败    | Tenant ID、Client ID、密码的值和有效期；`User.Read.All` 应用程序权限和管理员同意 |
| Teams 中授权失败 | 内容地址、有效域名、Application ID URI、预授权的客户端 ID、访问令牌版本            |
| 身份已验证但无法进入  | 员工是否已导入，账号和组织成员是否正常                                       |
