El conjunto de documentos para este producto aspira al uso de un lenguaje no discriminatorio. A los fines de esta documentación, "no discriminatorio" se refiere al lenguaje que no implica discriminación por motivos de edad, discapacidad, género, identidad de raza, identidad étnica, orientación sexual, nivel socioeconómico e interseccionalidad. Puede haber excepciones en la documentación debido al lenguaje que se encuentra ya en las interfaces de usuario del software del producto, el lenguaje utilizado en función de la documentación de la RFP o el lenguaje utilizado por un producto de terceros al que se hace referencia. Obtenga más información sobre cómo Cisco utiliza el lenguaje inclusivo.
Cisco ha traducido este documento combinando la traducción automática y los recursos humanos a fin de ofrecer a nuestros usuarios en todo el mundo contenido en su propio idioma. Tenga en cuenta que incluso la mejor traducción automática podría no ser tan precisa como la proporcionada por un traductor profesional. Cisco Systems, Inc. no asume ninguna responsabilidad por la precisión de estas traducciones y recomienda remitirse siempre al documento original escrito en inglés (insertar vínculo URL).
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).
Cisco recomienda que tenga conocimiento sobre estos temas:
La información que contiene este documento se basa en las siguientes versiones de software y 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. Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
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
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.
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.
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.