O recurso Multimarca permite que você controle todas as marcas de sua empresa em uma única instância do Zendesk Support. No entanto, as configurações de segurança permitem apenas a configuração de uma única URL para acesso remoto, o que pode ser um problema se você tem diferentes bancos de dados de usuários para cada marca.
Essa abordagem permitirá que você crie um script entre o Zendesk Support e o script de acesso por SSO em seu servidor para encaminhar seus clientes para URLs específicas com base na marca que desejam acessar.
Esse procedimento se aplica se você já configurou o JWT em seu servidor. Caso ainda não tenha feito isso, siga as instruções listadas no artigo Ativação de single sign-on com JWT.
O exemplo neste artigo usa php, mas é possível adaptar isso para outras linguagens.
Este artigo abrange as seguintes seções:
- Configuração de duas ou mais marcas
- Configuração de dois ou mais sistemas de autenticação de usuário de SSO com JWT
- Os scripts
- Atualização das configurações de segurança
- Considerações importantes
- Solução de problemas
Configuração de duas ou mais marcas
Você precisa configurar pelo menos duas marcas para seguir esse procedimento. Para obter detalhes, consulte Configuração de várias marcas (complemento do Professional e Enterprise).
Feita a configuração, salve a URL da marca e a URL da marca mapeada por host. Em breve, precisamos dessas informações em nosso script.
Configuração de dois ou mais sistemas de autenticação de usuário de SSO com JWT
Conforme mencionado anteriormente, primeiramente é necessário configurar o SSO com JWT em seus sistemas de autenticação de usuários. Você pode criar um para cada marca, mas lembre-se de que o segredo compartilhado que você obter das opções de segurança precisará ser o mesmo em todos os seus sistemas de autenticação.
Salve as URLs de acesso e de saída com as informações da seção anterior.
Os scripts
A lista das URLs salvas será assim:
Marca 1
URL sem mapeamento por host: https://brand1.zendesk.com
URL com mapeamento por host: https://support1.example.com
Marca 2
URL sem mapeamento por host: https://brand2.zendesk.com
URL com mapeamento por host: https://support2.example.com
Sistema 1
URL de acesso: https://page1.example.com/zdlogin.php
URL de saída: https://page1.example.com/zdlogout.php
Sistema 2
URL de acesso: https://page2.example.com/zdlogin.php
URL de saída: https://page2.example.com/zdlogout.php
Em seguida, crie o script. Nas URLs de cada marca, remova https:// da URL. Mantenha-os nos links do website.
Você pode também encontrar scripts aqui:
Script de acesso
<?
$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();
}
}
?>
Script de saída
<?
$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();
}
}
?>
Atualização das configurações de segurança
- Na Central de administração, clique em Conta na barra lateral e selecione Segurança > Single sign-on.
- Clique em Criar configuração de SSO e selecione Token da web JSON.
- Insira um Nome da configuração único.
- Para URL de acesso remoto, insira a URL para o script de acesso.
- Para URL de saída remota, insira a URL para o script de saída.
- Para evitar conflitos caso alguns de seus clientes tenham uma conta em mais de um sistema de autenticação de usuário com o mesmo endereço de e-mail, você pode definir Atualizar IDs externas? como Ativado.
- Informe o Segredo compartilhado à sua equipe de TI. A equipe precisará dele para a implantação do JWT.
- Salve suas alterações.
Considerações importantes
- O risco de segurança é baixo se você usar o script como está. Se você o modificar extensivamente fora das alterações mencionadas aqui, criará uma vulnerabilidade de segurança em seu próprio servidor (e não no do Zendesk).
- Como fornecemos apenas 1 token JWT, todos seus scripts de SSO usarão os mesmos tokens em seus sistemas de autenticação. Se um de seus sistemas for comprometido, isso resultará no comprometimento de todas as suas marcas.
- Se o erro "Solicitação de JWT inválida" for exibido quando você testar o SSO, consulte as instruções de Solução de problemas a seguir.
Solução de problemas
Para que não ocorram erros de solicitação de JWT inválida, codifique https://(subdominiopadrao).zendesk.com/ como/access/jwt?jwt=
nas duas marcas em que (subdominiopadrao) corresponde ao subdomínio da sua marca principal. Por exemplo, meudominio.zendesk.com.
- Codifique https://(subdominiopadrao).zendesk.com no script para SSO para que a carga útil do JWT seja sempre enviada para https://(subdominiopadrao).zendesk.com/access/jwt
- Implemente o trecho no script para usar o 'return_to'; assim o usuário final é redirecionado para a Central de Ajuda de origem. Lembre-se de anexar a carga útil para as duas marcas para fazer as URLs fixadas como '(subdominiopadrao)' e anexe o 'return_to'.
O trecho a seguir serve apenas como referência:
if(isset($_GET["return_to"])) {
$location .= "&return_to=" . urlencode($_GET["return_to"]);
}