Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Antecedentes

Configurar

Verificación

Troubleshoot

Información Relacionada

Introducción

Este documento describe cómo se puede mejorar la experiencia del usuario final en el inicio de sesión único (SSO) de Unified Contact Center Enterprise (UCCE).  Esto puede mejorarse si el usuario no se ve obligado a introducir su ID de inicio de sesión por segunda vez en la página de inicio de sesión del proveedor de identidad (IdP).

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- Flujo de inicio de sesión de UCCE SSO y AD FS

- Protocolo de transferencia de hipertexto (HTTP)

- Lenguaje de marcado de hipertexto (HTML)

- Lenguaje de marcado de aserción de seguridad 2.0 (SAMLv2)

- Autorización abierta 2.0 (OAuthv2)

- Familiaridad con Windows PowerShell (PS)

- Familiaridad con JavaScript (JS)

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

- UCCE 11.5(1) y superiores

- Finesse 11.5(1) y superiores

- Cisco Unified Intelligence Center (CUIC) 11.5(1) y posterior.

- Microsoft Active Directory (AD): AD instalado en 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. Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.

Antecedentes

En un inicio de sesión UCCE SSO, el usuario debe introducir su ID de inicio de sesión dos veces: primero en la página de inicio de sesión de la aplicación UCCE (Finesse, CUIC, por ejemplo) y segundo en la página de inicio de sesión IdP (si se utiliza un método de autenticación de formularios). En el ejemplo de este documento, se utiliza el servicio de federación de Active Directory (AD FS) como IdP.

Cuando SSO está habilitado en UCCE, después de ingresar el ID de inicio de sesión y pulsar el botón Enviar/Iniciar sesión en CUIC/Finesse, el ID de inicio de sesión introducido se almacena en la cookie cc_username y se conserva para las redirecciones al servidor de identidad (IdS) y luego al IdP. Es posible utilizar esta cookie en la página de inicio de sesión de IdP para rellenar automáticamente el ID de inicio de sesión.

Para su revisión, aquí se muestra un ejemplo de diagrama de flujo HTTP/SAML donde el usuario final es un agente Finesse y la aplicación UCCE es un servidor Finesse.

Este es un ejemplo de los encabezados de solicitud 4c HTTP enviados por el navegador web del usuario final a AD FS (el 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

Con AD FS 3.0 como IdP, la configuración se logra mediante la modificación del archivo onload.js, que AD FS inserta en la página HTML devuelta al usuario en respuesta a la solicitud a https://<AD FS FQDN>/adfs/ls/.

Paso 1. Para modificar el archivo onload.js, exporte el archivo a través del cmdlet de PowerShell al sistema de archivos:

PS C:\> Export-AdfsWebTheme -Name default -DirectoryPath c:\temp\adfs\

El archivo onload.js se coloca en este directorio:

C:\temp\adfs\script

Paso 2. En función del formato de inicio de sesión, agregue el fragmento de código JS adecuado en cualquier lugar del archivo fuera de las estructuras o lógica de código ya presentes. Para facilitar su uso, agréguelo a la parte inferior del archivo.

De forma predeterminada, la página de inicio de sesión presentada a los usuarios de SSO por AD FS en Windows Server 2012 R2 requiere un nombre de usuario que sea un formulario userPrincipleName (UPN). Este es un formato de correo electrónico, por ejemplo, user@cisco.com. En un centro de contacto de dominio único, la página de inicio de sesión de AD FS se puede modificar para permitir una ID de usuario AMAccountNameUser simple (UID) que no incluya un nombre de dominio como parte del nombre de usuario.

Si es necesario introducir un nombre de usuario de UPN en la página de inicio de sesión de AD FS, utilice este fragmento 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();

}

}

}

}

En esta línea, domain.com se debe modificar para que coincida con el dominio de los agentes UCCE si se utiliza un UPN como UID de inicio de sesión.

var userNameValue = cc_login_name + '@' + 'domain.com';

Nota: AD FS utiliza un login UPN de forma predeterminada. Consulte la sección Guía de la Función UCCE, Registro Único, Personalice Opcionalmente la Página de Inicio de Sesión de AD FS en Windows Server 2012 R2 para Permitir ID de usuario sobre cómo configurar la página de inicio de sesión de AD FS para permitir el inicio de sesión de sAMAccountName.

Si se debe introducir un nombre de usuario sAMAccountName (UID sin dominio) en la página de inicio de sesión de AD FS, utilice este fragmento 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: Los //símbolos del código denotan comentarios. Estas líneas se pueden eliminar si lo desea. Su propósito es ayudar a entender el código Javascript.

Paso 3. Guarde onload.js y vuelva a cargarlo en un nuevo tema web de AD FS con estos comandos de PowerShell:

Cree un tema AD FS personalizado con la plantilla a partir del tema predeterminado:

PS C:\> New-AdfsWebTheme -Name custom -SourceName predeterminado

Establezca el tema AD FS personalizado como activo:

PS C:\> Set-AdfsWebConfig -ActiveThemeName personalizado

Cargue el archivo onload.js modificado al tema personalizado:

PS C:\> Set-AdfsWebTheme -TargetName personalizado -AdditionalFileResource @{Uri=’/adfs/portal/script/onload.js’;path="c:\temp\adfs\script\onload.js"}

Nota: No es necesario reiniciar AD FS. El tema activo se modifica automáticamente.

Verificación

Utilize esta sección para confirmar que su configuración funcione correctamente.

Inicie sesión en Finesse o CUIC con una cuenta habilitada para SSO con sAMAccountName o UPN como ID de inicio de sesión (depende de la configuración de AD FS) y observe que en la página de inicio de sesión de AD FS el ID de usuario se rellena automáticamente con el foco en el campo de solicitud de contraseña. Sólo es necesario introducir la contraseña para que el inicio de sesión continúe.

Troubleshoot

En esta sección se brinda información que puede utilizar para resolver problemas en su configuración.

En caso de problemas, las herramientas de desarrollo del navegador web se utilizan para comprobar si las modificaciones de onload.js se inyectan en la página HTML devuelta y si se observa algún error en la Consola del navegador web.

Información Relacionada

- Herramientas para desarrolladores de Firefox

- Chrome Developer Tools

- Herramientas para desarrolladores de Internet Explorer (F12)

- SAM-Account-Name

- userPrincipleName

- UID

- Guías de funciones de Cisco Unified Contact Center Enterprise

- Soporte Técnico y Documentación - Cisco Systems