我的服务模式是什么?
所有 Suite: Growth、Professional、Enterprise 或 Enterprise Plus
Support Enterprise
免责声明:本文仅供说明之用。Zendesk 对自定义代码不提供支持,不保证代码质量,

当您设置多个品牌时,安全设置仅允许您设置一个 URL 用于远程登录。如果您的每个品牌都有不同的用户数据库,这可能会出现问题。

通过本文所述方法,您可以在 Zendesk 和您服务器中的 SSO 登录脚本之间创建一个脚本,从而根据客户尝试登录的品牌将客户转至特定 URL。

此步骤假定您已在服务器上配置 JWT。否则,请务必按照首先启用 JWT 单点登录一文中所列说明进行操作。

本文章中的示例使用的是 PHP,但您可以根据需要将其调整为其他语言。

本文章包含以下部分:

  • 两个或更多品牌,或设置更多
  • 使用 JWT SSO 设置两个或更多用户身份验证系统
  • 脚本
  • 更新安全设置
  • 重要注意事项
  • 故障排除

已设置两个或更多品牌

如果尚未配置,则至少需要配置两个品牌才能进行此操作。有关详情,请参阅设置多个品牌。设置后,保存品牌 URL 和主机映射的品牌 URL。您将在稍后的脚本中使用它们。

使用 JWT SSO 设置两个或更多用户身份验证系统

您必须在 Zendesk 中创建一个 JWT SSO 配置,在您的用户身份验证系统中创建两个或以上 JWT SSO 配置。您可以为每个品牌执行一个操作,但请记住,您从安全选项获取的共享密钥在您的所有身份验证系统中必须相同。

保存登录 URL 和退出 URL 以及上一部分的信息。

脚本

您的已保存 URL 列表可能如下所示:

品牌 1

非主机映射 URL:https://brand1.zendesk.com

主机映射 URL:https://support1.example.com

品牌 2

非主机映射 URL:https://brand2.zendesk.com

主机映射 URL:https://support2.example.com

系统 1

登录 URL:https://page1.example.com/zdlogin.php

退出 URL:https://page1.example.com/zdlogout.php

系统 2

登录 URL:https://page2.example.com/zdlogin.php

退出 URL:https://page2.example.com/zdlogout.php

接下来,创建脚本。从每个品牌 URL 的 URL 中移除https:// 。将它们保留在网站链接上。

您也可以在这里找到脚本:

  • zdlogin.php
  • zdlogout.php

登录脚本

<?

$brand_URLs = array(
	"brand1.zendesk.com" => "https://page1.example.com/yourcustomloginjwtscript.php",
	"support1.example.com" => "https://page1.example.com/yourcustomloginjwtscript.php",
	"brand2.zendesk.com" => "https://page2.example.com/yourcustomloginjwtscript2.php",
	"support2.example.com" => "https://page2.example.com/yourcustomloginjwtscript2.php"
	);

foreach($brand_URLs as $k => $v){
	if(strpos($_GET['return_to'],$k)){
		header("Location: ". $v);
		die();
	}
}

?>

退出脚本

<?

$brand_URLs = array(
	"brand1.zendesk.com" => "https://page1.example.com/yourcustomlogoutjwtscript.php",
	"support1.example.com" => "https://page1.example.com/yourcustomlogoutjwtscript.php",
	"brand2.zendesk.com" => "https://page2.example.com/yourcustomlogoutjwtscript.php",
	"support2.example.com" => "https://page2.example.com/yourcustomlogoutjwtscript.php"
	);

foreach($brand_URLs as $k => $v){
	if(strpos($_GET['return_to'],$k)){
		header("Location: ". $v);
		die();
	}
}
?>

更新安全设置

  1. 在管理中心,单击侧栏中的“帐户” ,然后选择“安全”>单点登录。
  2. 单击创建 SSO 配置,然后选择JSON 网络密钥。
  3. 输入唯一的配置名称。
  4. 对于远程登录 URL ,输入登录脚本的 URL。
  5. 对于远程退出 URL ,输入退出脚本的 URL。
  6. 万一您的一些客户在多个用户身份验证系统中拥有帐户,且电邮地址相同,为避免冲突,您可以将外部 ID 更新设置为开。
  7. 向您的 IT 团队提供共享密钥。以便他们进行 JWT 实施。
  8. 保存更改。

Screen_Shot_2022-12-12_at_6.08.07_PM.png

重要注意事项

请考虑以下事项:

  • 直接使用脚本的安全风险较低。如果您对本协议进行大量修改而不是这里提到的更改,则可能在您自己的服务器(而不是 Zendesk 的)上产生安全漏洞。
  • 由于我们仅提供一个 JWT 密钥,因此您的所有 SSO 脚本都将在您的身份验证系统中使用相同的密钥。如果您的一个系统遭到破坏,可能会导致您所有的品牌遭到破坏。
  • 如果您在尝试 SSO 时收到“无效的 JWT 请求”错误,请参阅以下故障排除说明。

故障排除

要避免出现无效 JWT 请求错误,请将 https://( defaultsubdomain ).zendesk.com/ 硬编码为/access/jwt?jwt=对于两个品牌,其中(defaultsubdomain)是您的主要品牌子域名。例如,mydomain.zendesk.com。

  1. 将 https://( defaultsubdomain ).zendesk.com 硬编码到 SSO 脚本中,以便 JWT 有效载荷始终发送到 https://( defaultsubdomain ).zendesk.com/access/jwt
  2. 将该代码段实施到脚本中以使用“return_to”,将终端用户重定向回源帮助中心。确保将两个品牌标记 URL 的有效负载附加为“( defaultsubdomain )”,并附加“return_to”。

    供您参考的代码段:
if(isset($_GET["return_to"])) {
  $location .= "&return_to=" . urlencode($_GET["return_to"]);
}

翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性

如对翻译准确性有任何疑问,请以文章的英语版本为准。

由 Zendesk 提供技术支持