Você pode autenticar os usuários usando o single sign-on do JWT (JSON web token). Este artigo descreve como configurar a autenticação SSO do JWT para os usuários do Microsoft Active Directory e abrange as etapas a seguir:
1. Configuração do Windows Server
3. Download e configuração do script de autenticação
1. Configuração do seu Windows Server
Você precisará de IIS e ASP instalados no seu Windows Server. Seu servidor IIS deverá ser parte do seu domínio e ter acesso direto para o controlador do domínio. O servidor IIS pode estar no controlador de domínio, mas não é obrigatório. Ao usar o Windows Server 2008, há uma função que deve ser instalada:
Para os Serviços de Função do IIS, você precisa das seguintes instalações:
- Application Development
- ASP.NET
- ASP
- Server Side Includes
E em Security
- Autenticação básica
Após suas funções e serviços serem instalados adequadamente, você deve configurar a autenticação do seu servidor IIS. O Zendesk funciona bem com a Basic Authentication, portanto, geralmente esse é o padrão. Certifique-se de desativar Anonymous Authentication, ou então não será solicitado que os usuários coloquem seu nome de usuário e senha do Windows, causando erro de entrada.
2. Configuração do Zendesk
Para obter instruções, consulte Habilitação do single sign-on por JWT no seu Zendesk no artigo Configuração de single sign-on com JWT (JSON Token da web). Para o valor da URL de entrada remota, especifique o local onde você colocará o script de autenticação ASP descrito na seção a seguir.
3. Download e configuração do script de autenticação
Baixe o script de autenticação de ASP desta página no Github:
https://github.com/zendesk/zendesk_jwt_sso_examples/tree/master/bun...
Coloque o script (se suas dependências, incluídas no pacote acima) no seu diretório wwwroot. Você pode criar um subdiretório, mas lembre-se que isso apenas aumentará a URL para o script. Durante a nova instalação, o IIS criará um diretório em:
c:\inetpub\wwwroot\
Para o navegador da web, os arquivos nessa pasta aparecerão nessa URL:
http://serveraddress/classic_asp_jwt_with_ad.asp
Abra o script no Bloco de Notas ou qualquer outro editor de texto. A primeira parte do script que precisa ser configurada é a seguinte:
' Credentials for a domain user for LDAP access sLdapReaderUsername = "domain\username" sLdapReaderPassword = "password"
Insira o nome de usuário e a senha de um usuário com acesso ao LDAP.
Em seguida, você precisa inserir o Token de segredo compartilhado obtido na configuração do JWT do Zendesk (chamada de sKey no script), além do seu subdomínio do Zendesk:
' Set your shared secret and Zendesk subdomain
sKey = ""
sSubdomain = ""
Esta é a parte do script que faz a pesquisa do LDAP na sua conta de usuário:
sQuery = "<LDAP://" & sDomainContainer & ">;(sAMAccountName=" & sUsername & "); adspath," & sFields & ";subtree"
Set userRS = oConn.Execute(sQuery)
Se você olhar o código, perceberá a obtenção de adspath, mail, displayName e sAMAccountName do usuário. Se você desejar pegar mais dados a serem usados na sua chamada, inclua isso nessa parte do código. Por exemplo, se eu desejar incluir o bloco Notes abaixo:
Atualizaria o código com o atributo “info” para ter a seguinte aparência:
sQuery = ";(sAMAccountName=" & strUsername & ");adspath,mail,displayName,sAMAccountName,info;subtree" Set userRS = oConn.Execute(sQuery)
Após os atributos serem pesquisados, podemos usá-los. O código abaixo realiza a tradução real dos atributos:
If Not userRS.EOF and not err then sFullName = userRS("displayName") sEmail = userRS("mail") sExternalID = userRS("sAMAccountName") if sOrg then sOrganization = "" end if sTags = "" sPhotoUrl = ""
Você verá que já colocamos displayName, mail e sAMAccountName. Se você desejar chamar os atributos individuais do seu usuário, usaria o objeto “userRS(“nameofattribute”)”. Então, por exemplo, se você incluiu a pesquisa “info” e eu desejo usar o bloco Notes para as tags, atualizaria o código para a seguinte maneira:
If Not userRS.EOF and not err then sFullName = userRS("displayName") sEmail = userRS("mail") sExternalID = userRS("sAMAccountName") if sOrg then sOrganization = "" end if sTags = userRS("info") sPhotoUrl = ""
Quais atributos individuais estão disponíveis? Você pode ver as opções de atributos existentes aqui:
http://www.kouti.com/tables/userattributes.htm
Além disso, se você ativar “Advanced Features” em Active Directory Users and Computers, pode alterar os atributos individuais diretamente. Para habilitar isso, vá em View > Advanced Features:
Após habilitar isso, se você for nas propriedades do usuário, verá um “Attribute Editor”:
Observação sobre a passagem por organizações e tags
Para fazer a passagem de uma organização com êxito para um usuário, a organização já deve existir no Zendesk. Se ela não existir Zendesk (ou se os nomes não forem uma correspondência exata), o Zendesk não criará a organização imediatamente, como faz o usuário. Você deve primeiramente criar as organizações envolvidas.
Para passar as tags com êxito, o atributo deve listá-las dessa maneira:
“tag1, tag2, tag3”
Se você não incluir “,” entre as tags, isso falhará.
Para obter mais informações sobre os diferentes campos aceitos, consulte esta publicação.
Após alterar o script, salve-o. Vá para o seu site do Zendesk e clique em Entrar. Isso deve redirecioná-lo ao script onde você colocará suas credenciais do Windows e ser enviado de volta para o Zendesk conectado!
4. Solução de problemas
Você clicou em Entrar e ela falhou? Como parte do script, incluímos uma opção de depuração. Se você definir o sinalizador de Debug como 'True' no script, as informações de Debug serão impressas ao acessar o seu script. Ele deverá ter uma aparência semelhante a essa:
[DEBUG] ZENDESK\test - should be of the form DOMAIN\username - if blank, your IIS probably allows anonymous access to this file.
[DEBUG] DomainContainer: DC=zendesk,DC=internal
[DEBUG] Attribute name: Test User
[DEBUG] Attribute email: test@zendesk.com
[DEBUG] Attribute jti: 2968942290171.981
[DEBUG] Attribute iat: 1380123848
[DEBUG] Redirecting to https://subdomain.zendesk.com/access/jwt?jwt=eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpYXQiOjEzODAxMjM4NDgsImp0aSI6Mjk2ODk0MjI5MDE3MS45ODEsIm5hbWUiOiJUZXN0IFVzZXIiLCJlbWFpbCI6InRlc3RAemVuZGVzay5jb20ifQ.QuRC6Ig7x_nK86Wc38u2viIVjshtTDohcgXTYpmU6VY
Aqui, você obterá todas as suas informações listadas adequadamente. Se você configurou uma organização, tags ou a PhotoURL, deve ver esses dados. Se você estiver vendo alguns dados, mas não todos, confirme os dados do atributo do usuário, além de certifica-se de que o código faz referência ao atributo adequado.
Se você está chegando na página, mas não está recebendo dados, isso significa que o script não está conseguindo se conectar ao seu controlador de domínio ou não tem permissão. Confirme no servidor que você pode acessar o controlador do domínio pelo compartilhamento do servidor (\\dcservername\ no prompt de execução). Em seguida, verifique que o nome de usuário e senha colocado no código estão corretos. Além disso, se você tem o acesso anônimo habilitado, pode receber uma página em branco, pois a autenticação nunca foi solicitada. Certifique-se de que o acesso anônimo está desativado.
Se você não conseguir chegar na página e seu navegador lançar um erro, o problema está dentro do IIS. Confirme que você instalou as funções/serviços necessários no seu servidor e que eles estão em execução. Se você ainda estiver tendo problemas, pode consultar um Administrador de IIS, pois os erros desse tipo estão fora do escopo desse guia.
Se você receber um erro, nos conte qual foi a sua resolução. Terei prazem em atualizar essa publicação com dicas adicionais para os problemas que vocês estão tendo e como resolvê-los.