多品牌使您可以在一个 Zendesk Support 实例中控制您公司的所有品牌。然而,安全设置仅允许您为远程登录设置一个 URL,如果您的每个品牌都有不同的用户数据库,这可能会出现问题。
这种方法将允许您在 Zendesk Support 和您服务器中的 SSO 登录脚本之间创建一个脚本,使您可以根据客户尝试登录的品牌将其路由到特定的 URL。
此过程假定您已在服务器上配置 JWT。否则,请确保您先按照文章 启用 JWT 单点登录 中列出的说明进行操作。
本文章中的此示例使用的是 PHP,但您可以根据需要将其修改为其他语言。
本文章包含以下部分:
已设置两个或更多品牌
您需要配置至少两个品牌才能遵循此过程。有关详情,请参阅 设置多个品牌(Professional Add-on 和 Enterprise)。
设置后,保存品牌 URL 和主机映射的品牌 URL。稍后我们将在脚本中使用它们。
两个或更多使用 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:// 。保留在网站链接上。
您也可以在这里找到脚本:
登录脚本
<?
$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();
}
}
?>
更新安全设置
- 在 管理中心中,单击 ,然后 选择“ 安全”>“单点登录”。
- 单击创建 SSO 配置 ,然后选择JSON 网络密钥。
- 输入一个唯一的配置名称。
- 对于远程登录 URL,输入登录脚本的 URL。
- 对于Remote logout URL,输入注销脚本的 URL。
- 为了避免在您的一些客户在多个用户身份验证系统中拥有相同电邮地址的帐户时发生冲突,您可以将“更新外部 ID”设置为 “开”。
- 将 共享 密钥 提供给您的 IT 团队。他们将需要它来实施 JWT。
- 保存更改。
重要注意事项
- 如果您按原样使用脚本,则安全风险较低。如果您对其进行大量修改,而不是此处提及的更改,则可能在您自己的服务器(而不是 Zendesk 的)上创建安全漏洞。
- 由于我们仅提供一个 JWT 密钥,您所有的 SSO 脚本都将在您的身份验证系统中使用相同的密钥。如果您的一个系统被盗用,则可能导致您所有的品牌被盗用。
- 如果您在尝试 SSO 时收到“无效的 JWT 请求”错误,请参阅下面的 故障排除 说明。
故障排除
为了避免无效 JWT 请求错误,将 https://(defaultsubdomain).zendesk.com/ 硬编码为/access/jwt?jwt=
对于两个品牌,其中 (defaultsubdomain) 是您的品牌子域名。例如,mydomain.zendesk.com
- 将 https://(defaultsubdomain).zendesk.com硬编码到 SSO 脚本中,这样 JWT 有效负载总是会发送到https://(defaultsubdomain).zendesk.com/access/jwt
- 将该代码段实施到脚本中以使用“return_to”,以便将终端用户重定向回原始帮助中心。确保将两个品牌标记 URL 的有效负载附加为“(默认子域名)”并附加“return_to”。
供您参考的代码段:
if(isset($_GET["return_to"])) {
$location .= "&return_to=" . urlencode($_GET["return_to"]);
}
翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性
如对翻译准确性有任何疑问,请以文章的英语版本为准。