멀티브랜드 기능으로 단일 Zendesk Support 인스턴스에서 회사의 모든 브랜드를 제어할 수 있습니다. 단, 보안 설정으로 인해 원격 로그인의 경우 하나의 단일 URL만 설정할 수 있는데 각 브랜드에 대해 서로 다른 사용자 데이터베이스가 있는 경우 문제가 될 수도 있습니다.
이 접근 방식으로 Zendesk Support와 서버의 SSO 로그인 스크립트 사이에 스크립트를 만들어 고객이 로그인하려는 브랜드에 따라 특정 URL로 고객을 라우팅할 수 있습니다.
이 절차는 서버에 JWT를 이미 구성해 놓았다고 가정합니다. 그렇지 않은 경우에는 먼저 JWT 통합 인증 사용 설정하기 문서의 안내를 따르세요.
이 문서의 예에서는 PHP를 사용하지만 필요한 경우 다른 언어에 맞게 조정할 수 있습니다.
이 문서는 다음 섹션으로 구성되어 있습니다.
두 개 이상의 브랜드 설정
이 절차를 따르려면 두 개 이상의 브랜드를 구성해야 합니다. 자세한 내용은 여러 브랜드 설정하기(Professional 추가 기능 및 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을 입력합니다.
- 원격 로그아웃 URL에 로그아웃 스크립트의 URL을 입력합니다.
- 일부 고객이 동일한 이메일 주소로 두 개 이상의 사용자 인증 시스템에 계정을 보유한 경우 충돌을 피하기 위해 외부 ID의 업데이트에 설정을 선택해야 합니다.
- IT 팀에게 공유 비밀키를 제공합니다. 이는 JWT 구현에 필요합니다.
- 변경 내용을 저장합니다.
중요 고려 사항
- 스크립트를 그대로 사용하는 경우에는 보안 위험이 낮습니다. 여기에 언급된 변경 외에 광범위하게 수정을 하는 경우에는 Zendesk의 서버가 아닌 자체 서버에 보안 취약성이 야기될 수 있습니다.
- 1개의 JWT 토큰만 제공하므로 모든 SSO 스크립트가 인증 시스템에서 동일한 토큰을 사용하게 됩니다. 따라서 시스템 하나가 보안 위협을 받으면 모든 브랜드가 보안 위협을 받을 수 있습니다.
- SSO를 시도할 때 “잘못된 JWT 요청” 오류가 표시되는 경우에는 아래의 문제 해결하기 안내를 참조하세요.
문제 해결하기
잘못된 JWT 요청 오류를 방지하려면 두 브랜드 모두에 대한 /access/jwt?jwt=
로 https://(defaultsubdomain).zendesk.com/을 하드 코딩하세요. 여기에서 (defaultsubdomain)은 주 브랜드 하위 도메인(예: 예: mydomain.zendesk.com
- https://(defaultsubdomain).zendesk.com을 SSO 스크립트에 하드 코딩하여 JWT 페이로드가 항상 https://(defaultsubdomain).zendesk.com/access/jwt에 전송되도록 합니다.
- 해당 스니펫을 스크립트에 구현하여 ‘return_to’를 사용하여 최종 사용자가 다시 원래 헬프 센터에 리디렉션되도록 합니다. 반드시 URL을 고정’(defaultsubdomain)’으로 표시하여 두 브랜드 모두에 대한 페이로드를 첨부하고 ‘return_to’를 첨부하세요.
다음 스니펫을 참조하세요.
if(isset($_GET["return_to"])) {
$location .= "&return_to=" . urlencode($_GET["return_to"]);
}