O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento descreve como a experiência do usuário final no login do Unified Contact Center Enterprise (UCCE) Single Sign-On (SSO) pode ser aprimorada. Isso pode ser melhorado se o usuário não for forçado a inserir sua ID de login pela segunda vez na página de login do Provedor de identidade (IdP).
A Cisco recomenda que você tenha conhecimento destes tópicos:
As informações neste documento são baseadas nestas versões de software e hardware:
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Em um login UCCE SSO, o usuário deve inserir sua ID de login duas vezes: primeiro na página de login do aplicativo UCCE (Finesse, CUIC, por exemplo) e segundo na página de login do IdP (se um método de autenticação de formulários for usado). No exemplo deste documento, o Serviço de Federação do Ative Diretory (AD FS) é usado como o IdP.
Quando o SSO é ativado no UCCE, depois que a ID de login é inserida e o botão Submit/Login é pressionado no CUIC/Finesse, a ID de login inserida é armazenada no cookie cc_username e preservada para os redirecionamentos para o Identity Server (IdS) e, em seguida, para o IdP. É possível usar esse cookie na página de login do IdP para preencher automaticamente a ID de login.
Para revisão, aqui está um exemplo de diagrama de fluxo HTTP/SAML em que o usuário final é um agente Finesse e o aplicativo UCCE é um servidor Finesse.
Este é um exemplo dos cabeçalhos de solicitação HTTP da etapa 4c enviados pelo navegador da Web do usuário final para o AD FS (o IdP).
Request URL: https://dc01.omozol.lab/adfs/ls/?SAMLRequest=tZTBjtowEIbv%2BxSR... Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9 Cache-Control: no-cache Connection: keep-alive Cookie: cc_username=agent1%40omozol.lab Host: dc01.omozol.lab Pragma: no-cache Referer: https://fns01p.omozol.lab/desktop/container/landing.jsp?locale=en_US Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Com o AD FS 3.0 como o IdP, a configuração é obtida pela modificação do arquivo onload.js, que o AD FS injeta na página HTML retornada ao usuário em resposta à solicitação para https://<AD FS FQDN>/adfs/ls/.
Etapa 1. Para modificar o arquivo onload.js, exporte o arquivo por meio do cmdlet PowerShell para o sistema de arquivos:
PS C:\> Export-AdfsWebTheme -Name default -DiretoryPath c:\temp\adfs\
O arquivo onload.js é colocado neste diretório:
C:\temp\adfs\script
Etapa 2. Dependendo do formato de login, adicione o trecho de código JS apropriado em qualquer lugar no arquivo fora das estruturas de código/lógica já presentes. Para facilitar, adicione-o à parte inferior do arquivo.
Por padrão, a página de início de sessão apresentada aos usuários SSO pelo AD FS no Windows Server 2012 R2 exige um nome de usuário que seja um formulário userPrincípioName (UPN). Este é um formato de e-mail, por exemplo, user@cisco.com. Em uma única central de contatos de domínio, a página de entrada do AD FS pode ser modificada para permitir um sAMAccountNameUser ID (UID) simples que não inclua um nome de domínio como parte do nome de usuário.
Se um nome de usuário UPN precisar ser inserido na página de login do AD FS, use este trecho de código:
// Get cc_username as login ID from HTTP Cookie header if (document.cookie) {
// If the position of cc_username in the cookie is the first position, 0... if (document.cookie.indexOf('cc_username') == 0) {
// Split the cookie into an array with the delimitor being '=' var cookies = document.cookie.split('=');
// If the first element of the array is cc_username then...
if (cookies[0] == 'cc_username') {
// ...the second element will be the actual username and we should save that. var cc_login_name = cookies[1]; } // Customize Login page: add domain if needed as AD FS by default require login ID in UPN form
// If the parsed login is not null, do the following logic if (cc_login_name != null) {
// If %40 (encoded '=') does not exist in the login name... if (cc_login_name.indexOf('%40') == -1) {
// ...then add '@domain.com' to ensure a UPN format is input var userNameValue = cc_login_name + '@' + 'domain.com';
// Populate the UPN into the userNameInput of the page, and put the focus
// on the password. document.getElementById("userNameInput").value = userNameValue; document.getElementById("passwordInput").focus(); } else {
// Otherwise, if %40 does exist in the username, replace it with the @ sign
// and populate the UPN into the userNameInput of the page, and put the
// focus on the password. var userNameValue = cc_login_name.replace('%40', '@'); document.getElementById("userNameInput").value = userNameValue; document.getElementById("passwordInput").focus(); } } } }
Nesta linha, domain.com deve ser modificado para corresponder ao domínio dos agentes UCCE se um UPN for usado como o UID de login.
var userNameValue = cc_login_name + '@' + 'domain.com';
Observação: o AD FS usa um login UPN por padrão. Consulte o guia de recursos do UCCE, capítulo Logon único, Opcionalmente Personalize a Página de Login do AD FS no Windows Server 2012 R2 para permitir a ID de usuário na seção de como configurar a página de logon do AD FS para permitir o login do sAMAccountName.
Se um nome de usuário sAMAccountName (UID sem domínio) deve ser inserido na página de login do AD FS, use este trecho de código:
// Get cc_username as login ID from HTTP Cookie header if (document.cookie) {
// If the position of cc_username in the cookie is the first position, 0... if (document.cookie.indexOf('cc_username') == 0) {
// Split the cookie into an array with the delimitor being '=' var cookies = document.cookie.split('=');
// If the first element of the array is cc_username then...
if (cookies[0] == 'cc_username') {
// ...the second element will be the actual username and we should save that. var cc_login_name = cookies[1]; } // Customize Login page: remove domain if needed to use login ID in sAMAccount form
// If the parsed login is not null, do the following logic if (cc_login_name != null) {
// If %40 (encoded '=') DOES exist in the login name... if (cc_login_name.indexOf('%40') != -1) {
// ...then split the login into an array about the @ sign and only keep the username.
var domainLogin = cc_login_name.replace('%40', '@')
var noDomainLogin = domainLogin.split('@'); var userNameValue = noDomainLogin[0];
// Populate the sAMAccountName into the userNameInput of the page, and put the focus
// on the password. document.getElementById("userNameInput").value = userNameValue; document.getElementById("passwordInput").focus(); } else {
// Otherwise, if %40 does not exist in the username, there is no "@domain",
// so populate the sAMAccountName into the userNameInput of the page,
// and put the focus on the password. document.getElementById("userNameInput").value = cc_login_name; document.getElementById("passwordInput").focus(); } } } }
Nota: Os //símbolos no código indicam comentários. Essas linhas podem ser removidas, se desejado. Seu objetivo é ajudar a entender o código Javascript.
Etapa 3. Salve onload.js e recarregue-o em um novo tema da Web do AD FS com estes comandos do PowerShell:
Crie um tema AD FS personalizado com o modelo do tema padrão:
PS C:\> New-AdfsWebTheme -Name custom -SourceName default
Defina o tema do AD FS personalizado como ativo:
PS C:\> Set-AdfsWebConfig -AtiveThemeName personalizado
Carregue o arquivo onload.js modificado para o tema personalizado:
PS C:\> Set-AdfsWebTheme -TargetName custom -AdditionalFileResource @{Uri=’/adfs/portal/script/onload.js’;path="c:\temp\adfs\script\onload.js"}
Note: Não é necessário reiniciar o AD FS. O tema ativo é modificado automaticamente.
Use esta seção para confirmar se a sua configuração funciona corretamente.
Faça login no Finesse ou CUIC com uma conta habilitada para SSO com sAMAccountName ou UPN como ID de login (depende da configuração do AD FS) e observe que na página de login do AD FS a ID de usuário é automaticamente preenchida com foco no campo de prompt de senha. Somente a senha precisa ser digitada para que o login continue.
Esta seção disponibiliza informações para a solução de problemas de configuração.
Em caso de problemas, as Ferramentas de Desenvolvedor do navegador da Web são usadas para verificar se as modificações do onload.js são injetadas na página HTML retornada e se algum erro é observado no Console do navegador da Web.