§ 00什么是 SAML SSO
SAML SSO 将 EasyLiveChat 接入贵公司已有的身份提供商 —— Okta、Microsoft Entra、Google Workspace 或其他任何 SAML 2.0 IdP。当客服在 IdP 控制面板里点击 EasyLiveChat 图标(或访问书签)时,会被跳转到 IdP,使用其平常登录用的密码登录,然后回到 EasyLiveChat 收件箱。无需输入 EasyLiveChat 密码。
如果您曾在网站上点击过 "使用 Google 登录",您已经使用过这一模式的消费版。SAML 是其企业版 —— 网站(我们)信任身份提供商(您的 Okta / Microsoft / Google)对用户身份的判断。
EasyLiveChat 从不运行身份提供商。您自带 IdP,我们负责接收端。
§ 01套餐可用性
SAML SSO 是 Enterprise 套餐功能。在 14 天免费试用期间同样解锁,方便您在决定之前评估整套配置。
| 套餐 | SAML SSO |
|---|---|
| 免费试用 | 试用期间解锁 |
| Starter | 锁定 |
| Growth | 锁定 |
| Enterprise | 包含 |
§ 02需要交给 IdP 管理员的值
这些是 IdP 需要了解的 EasyLiveChat 端标识。请将 <slug> 替换为您的工作区 slug。/settings/sso 页面会以可复制按钮的形式列出全部值。
| 单点登录 / ACS URL | https://api.livechattools.com/api/saml/<slug>/callback |
| 受众 / SP 实体 ID | https://api.livechattools.com/api/saml/<slug>/metadata |
| Name ID 格式 | 电子邮箱地址 |
| 必需属性 | email(或 NameID = email) |
| 签名断言 | 必需(签名响应可选) |
大多数 IdP 也支持直接导入 XML 元数据文档 —— 元数据 URL 与实体 ID 相同,返回我们后端构建的 XML。
§ 03设置 Okta
以下步骤假设您拥有 Okta 工作区的管理员权限。Okta 开发者套餐免费,可用于评估。
- 登录 Okta 管理后台 → Applications → Create App Integration → SAML 2.0。
- 为应用命名(例如 "EasyLiveChat")并点击 Next。
- 在 Configure SAML 步骤,使用 EasyLiveChat /settings/sso 页面提供的值填写以下字段:
- Single sign-on URL → 我们提供的 ACS URL。
- 勾选 "Use this for Recipient URL and Destination URL"。
- Audience URI (SP Entity ID) → 我们提供的 entity ID。
- Name ID format → EmailAddress.
- Application username → Email.
- Attribute Statements → 添加一行:
email→user.email— Name format Basic.
- 点击 Next → "I'm an Okta customer adding an internal app" → Finish。
- 在新应用的 Sign On 标签下 → "View SAML setup instructions"。复制 IdP Single Sign-On URL、IdP Issuer 和 X.509 证书(PEM 格式,包含 BEGIN/END 标记)。
- 将该应用分配给邮箱与 EasyLiveChat 工作区现有客服匹配的用户(People → Assignments)。
§ 04设置 Microsoft Entra (Azure AD)
以下步骤假设您在 Microsoft Entra 中拥有 Global Administrator 或 Application Administrator 角色。
- Entra 管理后台 → Enterprise applications → New application → Create your own application → 命名(如 "EasyLiveChat")→ Non-gallery app。
- 打开新应用 → Single sign-on → SAML。
- Basic SAML Configuration → 将 Identifier (Entity ID) 和 Reply URL (ACS) 设为您 /settings/sso 页面提供的值。
- Attributes & Claims → 确保有一个 claim 携带用户邮箱。可以使用默认的 emailaddress claim,并将其 URI 粘贴到 EasyLiveChat 的 "Email claim" 字段;或者新增一个名为 email 的 claim,值设为 user.mail。
- SAML Signing Certificate → 下载 "Certificate (Base64)" .cer 文件。用文本编辑器打开,将完整 PEM 内容(包含 BEGIN/END 标记)粘贴到 EasyLiveChat 的签名证书字段。
- 在 "Set up <app name>" 部分,复制 Login URL(→ EasyLiveChat 中的 IdP entry URL)和 Microsoft Entra Identifier(→ IdP issuer)。通过 Users and groups 分配用户。
§ 05设置 Google Workspace
以下步骤假设您是 Workspace 超级管理员。
- Google 管理后台 → Apps → Web and mobile apps → Add app → Add custom SAML app。命名为 "EasyLiveChat" 之类。
- 在 IdP details 步骤,下载 X.509 证书并复制 SSO URL 和 Entity ID。
- 在 Service provider details 步骤,粘贴 /settings/sso 页面提供的 ACS URL 和 Entity ID。将 Name ID format 设为 EMAIL,Name ID 设为 Basic Information > Primary email。
- Attribute mapping → 将 Primary email 映射到应用属性 email。
- 完成后,为需要登录的组织单位启用该应用。将证书 + URL 保存到 EasyLiveChat。
§ 06在 EasyLiveChat 中配置
打开 https://app.livechattools.com/settings/sso. 粘贴您刚刚从 IdP 拷贝的四个值:
- IdP entry URL — IdP 提供的单点登录 URL(例如 https://yourcompany.okta.com/app/exk.../sso/saml)。
- IdP issuer — IdP 的实体标识符(在 IdP 端有时称为 Issuer URL 或 Entity ID)。
- IdP 签名证书 (PEM) — 粘贴 X.509 证书(含 BEGIN CERTIFICATE / END CERTIFICATE 标记)。
- Email claim(可选) — 留空将使用 NameID。如果您的 IdP 在特定属性名下发送邮箱,请粘贴 claim URI。
点击 Save。状态徽章变为 CONFIGURED,SP-initiated 登录 URL 出现在页面底部。
§ 07客服如何登录
两条路径 — 都到达同一地点(您的收件箱),并使用新的会话令牌完成认证。
- SP-initiated — 让客服访问
https://api.livechattools.com/api/saml/<slug>/login。该 URL 适合保存为书签,会跳转到您的 IdP 再返回。 - IdP-initiated — 客服从 IdP 的应用面板(Okta dashboard、Microsoft 365 app launcher、Google Workspace app launcher)点击 EasyLiveChat 图标,直接进入 EasyLiveChat 收件箱。
§ 08客服匹配
EasyLiveChat 通过邮箱将 SAML 用户与现有 Agent 行匹配 —— IdP 验证的用户必须已存在于您的工作区作为客服。我们在首次 SSO 登录时不会自动创建客服(暂无 "just-in-time" 自动配置),以免 SSO 绕过您团队的邀请治理。
如果 SAML 用户没有对应的客服,callback 会带着 reason=agent_not_found 重定向回 EasyLiveChat 登录页。请在 Settings → Team 中用 IdP 发送的精确邮箱邀请该用户,然后重试。
§ 09故障排除
如果登录失败,EasyLiveChat 会重定向到 /login?saml_error=1&reason=<code>。代码告诉您发生了什么:
| reason= | 发生了什么 | 解决方法 |
|---|---|---|
| missing_response | IdP 没有向我们的 callback 发送 SAMLResponse。 | 再次检查 IdP 端的 ACS / Single Sign-On URL — 必须与我们提供的 callback URL 完全一致,包括工作区 slug。 |
| validation_failed | 我们收到了 SAMLResponse,但签名未通过验证。 | 粘贴到 /settings/sso 的签名证书必须与 IdP 实际的签名证书一致。请从 IdP 重新复制 PEM(包含 BEGIN/END 标记)。 |
| no_email | 签名验证通过,但 assertion 中没有邮箱字段。 | 确保 IdP 发送用户邮箱 —— 作为 NameID(格式 EmailAddress)或作为 claim。如果是 claim,请将其 URI 粘贴到 Email claim 字段。 |
| agent_not_found | IdP 声明的邮箱不在您的客服列表中。 | 在 Settings → Team 中用相同邮箱邀请该用户,然后重试登录。 |