Mon Apr 13 2020
...
使用 FastComments 设置 SSO
概述
什么是 SSO?
SSO,或单点登录,是一组用于允许您或您的用户使用 FastComments,而无需创建另一个账户的约定。
假设您不允许匿名评论,则需要一个账户才能使用 FastComments 进行评论。我们使这个注册过程非常简单——用户在评论时只需留下他们的电子邮件。但是,我们理解,即便如此,对某些网站来说也是多余的摩擦。
我该如何获取?
所有账户类型目前都可以访问 SSO 以及支持。不过,SSO 用户的最大数量将根据您的套餐而有所不同。
WordPress 用户
如果您使用我们的 WordPress 插件,那么无需编写任何代码!只需前往插件的管理员页面,点击 SSO 设置,然后启用。
这将带您进入一个单按钮点击的向导,该向导将创建您的 API 密钥,将其发送到您的 WordPress 安装中并启用 SSO。我们为您将其整合成了一个单一的按钮点击。
请注意,如果您是第一次安装该插件,则必须先完成设置过程,才能看到带有 SSO 设置按钮的管理员页面。
自定义集成
FastComments SSO 使用 HMAC-SHA256 加密作为实现 SSO 的机制。首先,我们将介绍整体架构,提供示例和详细步骤。不过,在本文末尾有关于 从 Disqus 和 Commento 迁移 的说明。
流程如下所示:
您无需为 FastComments SSO 编写任何新的 API 端点。只需使用您的密钥加密用户的信息,并将有效载荷传递给评论小部件。
我们提供了包括 NodeJS、Java/Spring 和传统 PHP 在内的多种语言/运行时的完整功能代码示例。尽管在 NodeJS 示例中我们使用了 ExpressJS,而在 Java 示例中使用了 Spring,但在这些运行时中实现 FastComments SSO 不需要任何框架/库——原生加密包均可使用。
您可以在这里找到代码示例库:
获取您的 API 密钥
您的 API 密钥可以从 此页面 获取。您也可以通过访问我的账户,点击 API/SSO 瓦片,然后点击“获取 API 密钥”来找到此页面。
评论小部件参数
评论小部件的高层 API 文档可以在 这里 找到,并点击“显示高级选项”。在页面上搜索 SSO。
让我们详细了解这些参数的含义。
评论小部件采用配置对象——如果您使用 FastComments 传递客户 ID(称为 tenantId),则已经传递了此对象。
要启用 SSO,请传递一个新的“sso”对象,该对象必须具有以下参数。值应在 服务器端 生成。
- userDataJSONBase64: 用户的数据,采用 JSON 格式,然后进行 Base64 编码。
- verificationHash: 从 UNIX_TIME + userDataJSONBase64 创建的 HMAC-SHA256 哈希。
- timestamp: 当前 Unix 时间。不得在未来,或超过三小时之前。
- loginURL: 评论小部件可以显示以登录用户的 URL。
- logoutURL: 评论小部件可以显示以登出用户的 URL。
- loginCallback: 当提供而不是登录 URL 时,评论小部件在点击登录按钮时将调用的函数。
- logoutCallback: 当提供而不是登出 URL 时,评论小部件在点击登出按钮时将调用的函数。
用户对象
用户对象包含以下架构:
- id(字符串,必填)(最大 1k 字符)
- email(字符串,必填)(最大 1k 字符)。注意:必须唯一。
- username(字符串,必填)(最大 1k 字符)。注意:用户名不能是电子邮件。无需唯一。
- avatar(字符串,选填)(最大 3k 字符)
- optedInNotifications(布尔,选填)
- displayLabel(字符串,选填,最大 100 个字符)。此标签将在其名称旁边显示。
- websiteUrl(字符串,选填,最大 2000 个字符)。用户的名称将链接到此处。
通知
要启用或禁用通知,请将 optedInNotifications 的值设置为 true 或 false。用户首次使用此值加载 SSO 有效载荷时,他们的通知设置将被更新。
VIP 用户和特殊标签
您可以通过使用可选的“displayLabel”字段在用户的名称旁边显示特殊标签。
未认证用户
要表示未认证用户,只需不填充 userDataJSONBase64、verificationHash 或 timestamp。提供 loginURL。
序列化和哈希用户数据的直接示例
有关示例的更多详细信息,请点击这里 (js),请点击这里 (java) 和 请点击这里 (php)。
从 Disqus SSO 迁移
Disqus 和 FastComments SSO 之间最大的区别在于,Disqus 使用 SHA1 进行加密,而我们使用 SHA256。这意味着从 Disqus 迁移很简单——将使用的哈希算法从 SHA1 更改为 SHA256,并更新传递给 UI 的属性名称。
从 Commento SSO 迁移
Commento 采用截然不同的 SSO 方法——他们要求您有一个端点,他们会调用该端点以验证用户。FastComments 则正好相反——只需使用您的密钥编码并哈希用户的信息,然后传递过去。
我们理解,任何集成都可以是一个复杂且痛苦的过程。请随时与您的代表联系或使用 支持页面。
