跳到主要内容

客户服务

客服系统单点登录(SSO):面向客服团队的 OpenID Connect 配置指南

每天处理客户会话的客服,应该用公司账号登录,而不是再记一套单独的密码。本文讲解 OpenID Connect SSO 的工作方式、开启前需要先定的事项,以及如何在本地部署(on-premise)的 MonoChat 上完成配置。

MonoChat 团队 更新于: 2 分钟阅读

本页内容
  1. 为什么客服团队要重视登录方式
  2. OpenID Connect 登录是怎么工作的
  3. 开启 SSO 之前,先定下这五件事
  4. 在本地部署的 MonoChat 上设置 SSO
  5. 已有的客服:账号是如何关联的
  6. SSO 是身份,角色才是访问权限
  7. 需要提前规划的限制
  8. SSO 在 MonoChat 中的位置
  9. 参考来源

客服系统的单点登录(SSO),是指客服用自己在身份提供商处的公司账号登录,例如 Microsoft Entra ID、Okta、Keycloak、AD FS 或 Google Workspace,而不是再用一套单独的密码。它背后的标准是 OpenID Connect(OIDC)。在本地部署(on-premise)的 MonoChat 上,您只需为整套部署配置一次,把它限制在公司的邮箱域名内,还可以让它成为唯一的登录方式。

客服团队尤其有理由重视这件事。一个客服账号能打开他可见范围内的所有 WhatsApp、Instagram 和 Messenger 会话:姓名、电话号码、订单详情,有时还有健康或付款方面的问题。这个账号应当遵守与公司其他账号相同的规则,并且在员工离职当天就失效。对于团队成员分布在不同城市、轮班覆盖不同时区的出海企业,这一点更加重要。

为什么客服团队要重视登录方式

被盗用或滥用的凭据,仍然是攻击者进入企业最常见的途径。Verizon 2025 年数据泄露调查报告分析了 12,195 起已确认的数据泄露事件,发现凭据滥用(22%)和漏洞利用(20%)是最主要的初始攻击途径。

自带一套密码的客服系统,会给每位客服多增加一组凭据:多一个可能被重复使用的密码,多一个有人离职时容易被遗忘的账号,多一个不受您的多因素认证和条件访问规则覆盖的登录入口。使用 SSO 后,客服系统不会接触密码。由您的身份提供商校验密码、执行 MFA 和访问策略,再告诉客服系统是谁登录了。

OpenID Connect 登录是怎么工作的

OpenID Connect 是建立在 OAuth 2.0 之上的身份层。MonoChat 使用的是授权码流程(authorization code flow):

  1. 客服在登录页点击 SSO 按钮,MonoChat 在弹出窗口中打开您的身份提供商的登录页。
  2. 客服在那里登录,并经过您设置的 MFA 和策略。
  3. 身份提供商带着一次性代码,把浏览器重定向回 MonoChat。
  4. MonoChat 服务器以服务器对服务器的方式,用这个代码换取 ID 令牌。令牌不会经过浏览器。
  5. MonoChat 校验 ID 令牌,并让客服登录。

按照 OpenID Connect 规范的说法,ID 令牌是“a security token that contains Claims about the Authentication of an End-User”。只有同时满足以下条件,MonoChat 才会接受它:

  • 它由您的身份提供商的某个密钥签名,该密钥在每次登录时都从其发现文档(<issuer>/.well-known/openid-configuration)中读取;
  • 它的签发者(iss)是您的 issuer,受众(aud)是 MonoChat 的 client ID,并且有效期(exp)未过;
  • 它带有 MonoChat 随请求发出的 nonce,这个值把令牌和本次登录绑定在一起,可以防止重放;
  • 它包含此人的电子邮件地址,并且身份提供商没有声明该地址未经验证。

请求还使用了 PKCE(S256)和 state 值,每个登录请求的有效期为 10 分钟,且只能使用一次。

开启 SSO 之前,先定下这五件事

决策可选项我们对客服团队的建议
谁可以登录所有域名,或仅限公司的邮箱域名限制为公司自己的域名
首次登录时怎么处理自动创建账号,或只接受受邀的人如果谁在公司工作已经由身份提供商控制,就自动创建账号
已有账号邮箱已验证时在首次登录时关联 SSO,或在一次密码登录之后关联取决于您的身份提供商是否发送 email_verified
其他登录方式保留密码和社交账号登录,或仅限 SSO等所有人都关联了 SSO 之后,改为仅限 SSO
谁可以创建新工作区任何有账号的人,或仅限拥有相应角色的人在企业内部部署中关闭开放的工作区创建

请在修改任何设置之前把这些写下来。这些正是您的安全团队会问的问题,答案也决定了您需要哪些设置。

在本地部署的 MonoChat 上设置 SSO

SSO 在服务器设置中为整套部署配置,而不是按工作区配置。完整说明请见帮助中心的单点登录页面,下面是精简版。

1. 在身份提供商处注册 MonoChat

创建一个带有 client secret 的 Web 应用,并为其设置:

  • 重定向 URI https://<your MonoChat domain>/api/oauth/oidc/redirect;
  • 授权码模式(authorization code grant);
  • scope 为 openid email profile;
  • 客户端认证方式为把密钥以 HTTP Basic 发送(client_secret_basic)。

请确保 ID 令牌包含 email 声明,并记下 client ID、client secret 和 issuer。

2. 原样复制 issuer

issuer 就是您的提供商发现文档中的 issuer 值。常见格式如下:

身份提供商Issuer
Microsoft Entra IDhttps://login.microsoftonline.com/<tenant id>/v2.0
Oktahttps://<your Okta domain>/oauth2/default 或 https://<your Okta domain>
Keycloakhttps://<your Keycloak host>/realms/<realm>
AD FS 2016 及以上版本https://<your AD FS host>/adfs
Google Workspacehttps://accounts.google.com

请在浏览器中打开 <issuer>/.well-known/openid-configuration,逐字符复制该值,如果末尾有斜杠也要一并复制。两者只要有差异,MonoChat 就会拒绝所有登录,这是首次测试失败最常见的原因。

3. 添加设置并重启

公开部分(issuer、client ID、重定向路径、scope 和按钮文字)放在 public.oauth.oidc 下;client secret 放在 oauth.oidc 下,只保留在服务器上。其中有两个选项承载着上面表格里的决策:

  • autoCreateAccounts: true 会在某人首次 SSO 登录时创建 MonoChat 账号,即使注册方式设置为仅限邀请也是如此;
  • allowedEmailDomains: ["yourcompany.com"] 会拒绝其他域名下的所有邮箱地址。对于 Google Workspace,MonoChat 检查的是账号所属的 Workspace 域名(hd 声明),而不是邮箱地址,因为个人 Google 账号可以使用任意域名的邮箱地址。

按钮上显示的是“使用 SSO 登录”(以每个人所用的语言显示),或者您自己设置的文字,例如“使用 Northwind SSO 登录”。

4. 安全地让 SSO 成为唯一方式

当所有人都关联了 SSO 之后,把允许的登录方式(public.auth.methods)设为 ["oidc"]。此后登录页只显示 SSO 按钮,服务器会拒绝密码登录和社交账号登录。Root 超级用户仍可通过 /auth/signin?fallback=1 用密码登录,因此身份提供商宕机时不会把整套部署锁住。如果要阻止新的 SSO 账号自行创建工作区,请把 public.disableTenantCreation 设为 true。

5. 测试四种登录

  1. 已有账号的人:弹出窗口关闭,随即进入系统。
  2. 没有账号的人:账号被创建;如果您没有开启自动创建账号,则被拒绝。
  3. 来自其他域名的人:如果您限制了域名,则被拒绝。
  4. 在仅限 SSO 的状态下用密码登录:被拒绝,而 root 后备登录仍然可用。

已有的客服:账号是如何关联的

大多数团队开启 SSO 时,客服已经有了 MonoChat 账号。MonoChat 会用以下两种方式之一,把 SSO 关联到邮箱地址相同的已有账号:

  • 自动关联:在首次 SSO 登录时,如果部署允许合并,并且 ID 令牌表明该邮箱地址已验证(email_verified: true)。
  • 一次密码登录之后:其他所有情况下,MonoChat 会请此人先用密码登录一次,然后在那时关联 SSO。接受工作区的邀请同样会完成关联。

Microsoft Entra ID 和 AD FS 不会发送 email_verified。使用它们时,在切换为仅限 SSO 之前,请继续允许密码登录,直到所有人都关联了 SSO,或者重新邀请这些人。

SSO 是身份,角色才是访问权限

登录让一个人拥有账号,而不是拥有访问您会话的权限。一个 MonoChat 账号可以属于多个工作区,人们是先登录、再选择工作区。只有在工作区邀请了某人并为其分配角色之后,此人才能看到该工作区,角色决定他能接触哪些渠道、会话和设置。如何设置角色,请参阅团队收件箱角色与权限。

这种分工正是审计人员希望看到的:

  • 入职: 由身份提供商创建此人;工作区管理员邀请他并选择角色。
  • 调岗: 在 MonoChat 中更改角色或工作组,登录方式不变。
  • 离职: 在身份提供商处停用此人,并在 MonoChat 中把他从工作区移除。

需要提前规划的限制

  • 移动应用。 MonoChat 的 Android 和 iOS 应用目前还不提供 SSO。如果 SSO 是唯一的登录方式,客服就无法在手机上登录,因此请为移动端用户保留另一种方式,或者把班次安排在电脑端。
  • 退出登录。 退出 MonoChat 不会让此人退出身份提供商,目前在身份提供商处退出也不会让他退出 MonoChat。在身份提供商处停用离职员工,可以阻止新的登录;同时也请把他从工作区中移除。
  • 网络。 用户的浏览器必须能访问 /api/oauth/oidc/authorize 和重定向路径,MonoChat 服务器必须能通过 HTTPS 访问您的提供商的发现文档、令牌端点和密钥集。如果您还按 IP 限制了这套部署的访问,请留意这些路径。

SSO 在 MonoChat 中的位置

SSO 在整套部署的服务器设置中配置,因此目前它属于本地部署的 MonoChat:这是企业版的一种选择,面向在自有服务器上运行平台、并使用自己的 LLM 和向量数据库的团队。企业版页面介绍了本地部署方案,安全页面则涵盖了基于角色的访问控制、工作区隔离和认证。关于 AI 上线中的数据问题,请参阅 AI 聊天机器人数据隐私清单。

如果想先体验产品本身,可以在 app.monochat.ai 使用免费的 Basic 套餐,它包含一名客服和一个渠道。

参考来源

常见问题

常见问题

客服系统里的 SSO(单点登录)是什么?

单点登录让客服用自己在身份提供商(例如 Microsoft Entra ID、Okta 或 Google Workspace)处的公司账号登录客服系统,而不必再使用一套单独的密码。由身份提供商确认用户是谁,客服系统据此让其登录。

用 SSO 登录后,客服能访问所有工作区吗?

不能。登录只是让一个人拥有账号,并不等于拥有访问权限。在 MonoChat 中,只有工作区邀请了这个人并为其分配角色之后,他才能看到该工作区,角色决定他能接触哪些渠道和会话。

可以把 SSO 设为唯一的登录方式吗?

在本地部署的 MonoChat 上可以:把允许的登录方式设为仅 OpenID Connect,登录页就只显示 SSO 按钮,密码登录和社交账号登录都会被拒绝。Root 超级用户保留密码登录作为后备,这样身份提供商出故障时,整套系统也不会被锁在门外。

MonoChat SSO 支持哪些身份提供商?

任何 OpenID Connect 提供商都可以。帮助中心列出了 Microsoft Entra ID、Okta、Keycloak、AD FS 2016 及以上版本和 Google Workspace 的 issuer 格式。

MonoChat 移动应用支持 SSO 吗?

暂不支持。如果某套部署只允许 SSO 登录,客服就无法登录移动应用,因此在移动应用支持 SSO 之前,请为移动端用户保留另一种登录方式。

app.monochat.ai 上能用 SSO 吗?

SSO 在整套部署的服务器设置中配置,所以目前用于本地部署的安装。如果想了解您的具体情况,请通过企业版页面联系我们的团队。

首月 Growth 套餐免费

在一个收件箱中管理 WhatsApp、Instagram 和 Messenger

免费开始使用 MonoChat:共享团队收件箱、AI 助手、消息模板和营销活动,基于 Meta 官方 API。

每家企业一个兑换码 • 30 天内兑换 • 无需绑定银行卡

$150 助您起步。

领取