Introduction
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).
Prerequisites
Requirements
A Cisco recomenda que você tenha conhecimento destes tópicos:
- Fluxo de login UCCE SSO e AD FS
- Protocolo HTTP
- Linguagem de Marcação de Hipertexto (HTML)
- Security Assertion Markup Language 2.0 (SAMLv2)
- Open Authorization 2.0 (OAuthv2)
- Familiaridade com o Windows PowerShell (PS)
- Familiaridade com JavaScript (JS)
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- UCCE 11.5(1) e superior
- Finesse 11.5(1) e superior
- Cisco Unified Intelligence Center (CUIC) 11.5(1) e superior.
- Microsoft Ative Diretory (AD) - AD instalado no Windows Server
- AD FS 2.0/3.0
- Windows Server 2012 R2
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.
Informações de Apoio
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
Configurar
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.
Verificar
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.

Troubleshoot
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.
Informações Relacionadas