Inhoud

Inleiding

Voorwaarden

Vereisten

Gebruikte componenten

Achtergrondinformatie

Configureren

Verifiëren

Problemen oplossen

Gerelateerde informatie

Inleiding

In dit document wordt beschreven hoe de inlognaam van de eindgebruiker in Unified Contact Center Enterprise (UCCE) Single aanmelding (SSO) kan worden verbeterd.  Dit kan worden verbeterd als de gebruiker niet wordt gedwongen om zijn inlogid-ID voor een tweede keer op de inlogpagina van de Identity Provider (IDP) in te voeren.

Voorwaarden

Vereisten

Cisco raadt kennis van de volgende onderwerpen aan:

- UCCE SSO-inlogflow en AD-FS

- Hyper-Text Transfer Protocol (HTTP)

- Hyper-Text Markup Language (HTML)

- Security Association Markup Language 2.0 (SAMLv2)

- Open autorisatie 2.0 (OAuthv2)

- Bekendheid met Windows PowerShell (PS)

- Bekendheid met JavaScript (JS)

Gebruikte componenten

De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:

- UCCE 11.5(1) en hoger

- Finesse 11.5(1) en hoger

- Cisco Unified Intelligence Center (CUIC) 11.5(1) en hoger.

- Microsoft Active Directory (AD) - AD geïnstalleerd op Windows Server

- AD FS 2.0/3.0

- Windows Server 2012 R2

De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk levend is, zorg er dan voor dat u de mogelijke impact van om het even welke opdracht begrijpt.

Achtergrondinformatie

Als u bij UCCE SSO inlogt, moet de gebruiker twee keer hun inlogid-ID invoeren: eerst op de inlogpagina van de UCCE-toepassing (Voltooien, CUIC, bijvoorbeeld) en vervolgens op de inlogpagina van IDP (als er een methode voor formulierverificatie wordt gebruikt). In het voorbeeld in dit document wordt de Active Directory Federation Service (AD FS) gebruikt als de IDP.

Wanneer SSO in UCCE is ingeschakeld, nadat de inlogid is ingevoerd en op de knop Inzenden/inloggen is gedrukt op CUIC/Finesse, wordt de ingevoerde inlogID opgeslagen in koekje cc_gebruikersnaam en bewaard voor de omleiding naar de Identity Server (IDS) en vervolgens naar de IDP. Deze cookie kan op de inlogpagina van IDP worden gebruikt om de inlogID automatisch te laten invullen.

Voor review is hier een voorbeeld HTTP/SAML stroomschema waar de eindgebruiker een Finse agent is en de UCCE toepassing een Finse server is.

Dit is een voorbeeld van de stap 4c HTTP-aanvraagheaders die door de eindgebruiker web browser naar AD FS (de IDP) worden verstuurd.

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

Configureren

Met AD FS 3.0 als IDP wordt de configuratie bereikt door de wijziging van het onload.js-bestand, dat AD FS injecteert in de HTML-pagina die naar de gebruiker wordt teruggestuurd in antwoord op het verzoek aan https://<AD FS FQDN>/adfs/ls/.

Stap 1. Om het bestand.js te wijzigen, exporteert u het bestand via de PowerShell-mallen naar het bestandssysteem:

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

Het bestand onload.js wordt in deze map geplaatst:

C:\temp\adfs\script

Stap 2. Afhankelijk van de inlogindeling moet u het juiste JS-codefragment toevoegen om het even welke plek in het bestand buiten de reeds aanwezige codesstructuren/logica. Voeg dit bijvoorbeeld toe aan de onderkant van het bestand.

Standaard vereist de inlogpagina die in Windows Server 2012 R2 aan SSO-gebruikers wordt gepresenteerd door AD-FS een gebruikersnaam die een UPN-formulier is. Dit is een e-mailachtig formaat, bijvoorbeeld user@cisco.com. In één domeincontactcentrum kan de inlogpagina voor AD FS worden gewijzigd om een eenvoudige sAMAAccountNameUser ID (UID) toe te staan die geen domeinnaam als deel van de gebruikersnaam bevat.

Als er een UPN-gebruikersnaam moet worden ingevoerd op de AD FS-inlogpagina, gebruikt u dit codetype:

// 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();

}

}

}

}

Op deze regel moet domain.com worden aangepast om het domein van de UCCE-agents aan te passen als een UPN wordt gebruikt als de inlogUID.

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

Opmerking: voor AD900 wordt standaard een UPN-inlognaam gebruikt. Raadpleeg de UCCE-functiehandleiding, Single aanmelding, Optioneel aanpassen aan de inlogpagina voor AD FS-aanmelding in Windows Server 2012 R2 zodat gebruiker-ID sectie kan toestaan hoe u de ADFS-inlogpagina kunt configureren om inloggen van sAMAccountName mogelijk te maken.

Als er een gebruikersnaam (UID zonder domein) op de inlogpagina voor AD FS moet worden ingevoerd, gebruikt u dit codetekort:

// 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();

}

}

}

}

Opmerking: de //symbolen in de code duiden op opmerkingen. Deze regels kunnen indien gewenst worden verwijderd. Hun doel is om de Javascript-code te begrijpen.

Stap 3. Sla onload.js op en laad het opnieuw op een nieuw AD FS-webthema met deze PowerShell-opdrachten:

Maak een aangepast AD FS-thema met de sjabloon uit standaardthema:

PS C:\> New-AdfsWebTheme -Name aangepaste-SourceName standaard

Stel het aangepaste AD FS-thema in als actief:

PS C:\> Set-topWebConfig-activeNaam aangepast

Laad het aangepaste bestand onload.js aan het aangepaste thema:

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

Opmerking: De AD FS hoeft niet opnieuw te worden opgestart. Het actieve thema wordt automatisch gewijzigd.

Verifiëren

Gebruik dit gedeelte om te bevestigen dat de configuratie correct werkt.

Meld u aan bij Finse of CUIC met een SSO-enabled-account met sAMAcountName of UPN als inlogid (afhankelijk van de AD FS-configuratie) en merk op dat de gebruiker-ID op de AD FS-inlogpagina automatisch wordt ingevuld met de focus op het veld met een wachtwoord. Alleen het wachtwoord hoeft te worden ingevoerd om de inlognaam verder te kunnen zetten.

Problemen oplossen

Deze sectie verschaft informatie die u kunt gebruiken om problemen met uw configuratie op te lossen.

In geval van problemen wordt het web browser Development Tools gebruikt om te controleren of de modificaties van de onload.js in de teruggegeven HTML pagina worden geïnjecteerd en of er fouten worden waargenomen in web browser console.

Gerelateerde informatie

- Firefox-ontwikkelingstools

- Tools voor chroomontwikkeling

- Internet Explorer (F12) softwareontwikkelaars

- SAM-accountnaam

- userPrincipleName

- UID

- Cisco Unified Contact Center Enterprise-functiehandleidingen

- Technische ondersteuning en documentatie – Cisco Systems