# 通过 JWT 为 impact.com 微型网站设置 SSO

贵公司的 Advocate 计划微网站通常要求您的客户倡导者在访问其分享链接和奖励详情之前使用用户名和密码注册。然而，作为一种高级替代方案，您可以通过生成一个 [JSON Web 令牌 (JWT)](https://en.wikipedia.org/wiki/JSON_Web_Token) 在服务器端并通过 URL 参数将其传递给微网站。

使用此方法，参与者将不会拥有微网站的登录凭据。相反，他们通过登录您现有的客户门户来访问，随后该门户使用 JWT 将他们重定向到微网站以识别他们并显示个性化内容。

#### 开始之前

{% hint style="warning" %}
**重要：** 这是一个高级实现，会绕过微网站的标准托管身份服务，并且需要您的开发团队提供支持来设置。
{% endhint %}

仅当满足以下所有条件时才应使用此方法：

* 您希望通过自动将参与者登录到您计划的微网站来模拟单点登录 (SSO) 体验。
* 您可以在服务器端生成 JWT。
* 您无法或不想在您的网站上安装 [通用跟踪标签 (UTT)](https://help.impact.com/brand/zh/nin-xiang-liao-jie-shen-me/platform-features/tracking/javascript-tag-tracking/tracking-with-universal-tracking-tag-utt) 。

{% stepper %}
{% step %}

### 第 1 步：创建一个不使用托管身份的微网站

创建微网站时，您需要关闭托管身份服务，然后将所有页面设置为可供“未验证”用户访问。 *仪表板* 页面将使用 JWT 对用户进行身份验证并加载微网站。

<details>

<summary>创建微网站</summary>

首先，调整设置以关闭 *参与者登录* 选项。

1. 在左侧导航菜单中，选择 ![](https://1186853034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMLlMoFBtKJa8ptd3zaw%2Fuploads%2Fh35M3mMIl7XP42pqh7Ls%2Fimage.png?alt=media\&token=bf6b6ba2-295c-4cdb-8c77-f171416c13e1) **\[Engage]** **→ 内容**.
2. 在 *微型网站* 卡上，选择 **编辑设置**.
3. 然后您将被重定向到您的新 *微网站设置* 页面中所列。
4. 在 *登录* 部分， ![](https://1186853034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMLlMoFBtKJa8ptd3zaw%2Fuploads%2Fgit-blob-2c3a3c392d640f7b79d44c16f21c2c4f0ec3dcca%2F80381ca112cfb2757e97b8669cc0b5c98c8ce8d60ed9e3048b4a86a52e76719f.svg?alt=media) **\[关闭切换]** **参与者登录**.
5. 选择 **保存设置**.

</details>

<details>

<summary>配置仪表板页面</summary>

接下来，将微网站的 *仪表板* 页面配置为对未验证用户可见。然后，将页面上的组件连接到您的推荐计划，以便显示正确的信息。

1. 调整您站点的 *仪表板* 页面设置。
   * 在左侧导航菜单中，选择 ![](https://1186853034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMLlMoFBtKJa8ptd3zaw%2Fuploads%2F8AYI7cAhXQWYRoQlKHte%2Fimage.png?alt=media\&token=d2b5a01e-c7b4-4a71-a6a0-0cea5a4b7ac4) **\[Engage]** **→ 内容** → **设置内容** 或 **编辑内容**.
   * 从 *微型网站* 选项卡，选择 **仪表板** 在 *登录后布局* 部分。
   * 选择 ![](https://1186853034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMLlMoFBtKJa8ptd3zaw%2Fuploads%2Fgit-blob-c746d936c908b9090325464502f7c10acda0e993%2F2a92939e8e78dd7e0c0416b1a250d5ef1d7ab0dec966fb5ed320ca62acfc06c5.svg?alt=media) **\[菜单] → 设置**.
   * 从 *允许的用户* 下拉列表，选择 **未验证**.
2. 将您的计划 ID 添加到页面上的组件中， *仪表板*.
   * 用户统计 — 您必须将 ID 添加到您选择显示的每个单独的用户统计中。
   * 分享链接
   * 推荐码
   * 社交媒体按钮 — 您必须将 ID 添加到您选择包含的每个单独社交媒体分享按钮中。
3. 在右上角，选择 **保存**.

   <div data-with-frame="true"><figure><img src="https://1186853034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMLlMoFBtKJa8ptd3zaw%2Fuploads%2Fgit-blob-7314ab2d13689a218d7b2ab0ff0ae784aecc169d%2Fe489a23c2242c41439531bebcaa74a7caac8de79b22b4e423c11194933156962.jpg?alt=media" alt=""><figcaption></figcaption></figure></div>

有关使用编辑器查找和调整页面及组件设置的帮助，请参阅 [微型网站编辑器说明](https://help.impact.com/brand/zh/nin-xiang-liao-jie-shen-me/advocate-program/manage-advocate-participant-experiences/microsite-experiences/microsite-editor-explained) 和 [自定义微网站布局与页面](https://help.impact.com/brand/zh/nin-xiang-liao-jie-shen-me/advocate-program/manage-advocate-participant-experiences/microsite-experiences/customize-microsite-layouts-and-pages).

</details>

<details>

<summary>移除不必要的页面</summary>

移除微网站不会使用的布局和页面。

1. 将光标悬停在页面或布局上。
2. 选择 ![](https://1186853034-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMLlMoFBtKJa8ptd3zaw%2Fuploads%2Fgit-blob-8ec3e877b1397045c61d394485e72ac4d93120ee%2Fc6ddb46c637059f06e86c790a911217a9428f5c47b5efef046f90555e85b03cd.svg?alt=media) **\[More]** **→ 删除**.
3. 移除 *登录后布局*.
4. 移除以下页面：
   * 编辑资料
   * 电子邮件验证
   * 忘记密码
   * 登录
   * 退出登录
   * 登录
   * 重置密码
   * 验证电子邮件

</details>
{% endstep %}

{% step %}

### 第 2 步：生成 JWT

JWT 结构遵循用户身份验证的标准 Advocate 要求。如果您以前集成过 Advocate，您很可能已经为 UTT 生成了类似的令牌。

您必须在服务器或任何受信任的后端系统上安全地生成 JWT——决不可在浏览器中生成。

了解如何 [生成 JWT 及其负载的要求](https://integrations.impact.com/impact-brand/docs/json-web-tokens).
{% endstep %}

{% step %}

### 第 3 步：将 JWT 附加到微网站 URL

一旦用户登录到您的平台，请将他们重定向到包含 JWT 的微网站，JWT 作为 URL 查询字符串的一部分。

{% hint style="info" %}
**示例：** `https://your-microsite.squatch.app/?jwt=<YOUR_GENERATED_JWT>`
{% endhint %}

您可以选择在新的浏览器标签中打开微网站，或使用 iframe 将微网站嵌入到您的应用中。如果您决定嵌入微网站，请确保妥善处理 [跨源资源共享 (CORS)](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) 和浏览器限制。
{% endstep %}
{% endstepper %}

#### 备注

* 如果您使用此身份验证方法，用户将不会拥有微网站的登录凭据。
* 基于 JWT 的访问必须严格控制。不要在客户端 JavaScript 中暴露或操作它。
* 这是一种非标准方法——在将计划上线之前，请在预发布/测试环境中充分测试。
* 如果您需要 [支持](mailto:saasquatch-support@impact.com)，请在您的支持请求中包含您的微网站 URL、实施细节和示例 JWT 负载。
