Personalizzazione avanzata delle pagine di accesso di AD FS
Active Directory Federation Services (AD FS) in Windows Server 2012 R2 e versioni successive supporta la personalizzazione dell'esperienza di accesso utente. Per la maggior parte degli scenari, è possibile usare i cmdlet predefiniti di Windows PowerShell per configurare le pagine di accesso di AD FS. L'approccio consigliato consiste nell'usare i comandi predefiniti di Windows PowerShell per la personalizzazione quando possibile. Per altre informazioni, vedere AD-FS personalizzazione dell'accesso utente.
In alcuni casi, potrebbe essere necessario fornire un'esperienza di accesso che non può essere abilitata usando i comandi di PowerShell forniti con AD FS. È possibile configurare l'esperienza di accesso aggiungendo codice personalizzato al file onload.js fornito con AD FS. Il codice del file viene eseguito in tutte le pagine AD FS.
Considerazioni
Prima di iniziare a personalizzare le pagine di accesso di AD FS, esaminare le considerazioni importanti seguenti.
Importante
Qualsiasi modifica della personalizzazione che influisce sui flussi di reindirizzamento o modifica i parametri del protocollo usati da AD FS non è supportata.
Il file onload.js viene eseguito in tutte le pagine di AD FS, incluse le pagine di accesso basate su form, le pagine di individuazione dell'area di autenticazione principale e così via. Assicurarsi sempre che il codice personalizzato venga eseguito solo come previsto e non in modo imprevisto.
AD FS include un tema Web integrato denominato predefinito. Non è possibile modificare il contenuto onload.js che crea il tema Web predefinito. Per aggiornare il file onload.js, creare e usare un tema Web personalizzato per le pagine di accesso ad AD FS. Per altre informazioni, vedere AD-FS personalizzazione dell'accesso utente.
Il file onload.js originale per il tema Web predefinito contiene anche il codice per gestire il rendering della pagina per diversi fattori di forma. L'approccio di personalizzazione consigliato consiste nell'aggiungere il codice della logica personalizzato al file di onload.js esistente. Non modificare il contenuto originale del file onload.js.
Quando si fa riferimento agli elementi HTML, verificare sempre l'esistenza dell'elemento prima di agire sull'elemento. Questo passaggio offre affidabilità e garantisce che la logica personalizzata non venga eseguita nelle pagine che non contengono questo elemento. Per identificare gli elementi HTML esistenti, visualizzare l'origine HTML nelle pagine di accesso di AD FS.
È consigliabile convalidare le personalizzazioni in un ambiente alternativo ed eseguire test prima di spostare le personalizzazioni nei server AD FS di produzione. Questo passaggio riduce le probabilità di esporre gli utenti finali alle personalizzazioni prima della convalida.
Passaggi di personalizzazione
Le sezioni seguenti illustrano la procedura per personalizzare il contenuto del file onload.js per le pagine di accesso ad AD FS.
Creare un tema Web personalizzato
Per aggiungere la logica personalizzata al file onload.js, il primo passaggio consiste nel creare un tema Web personalizzato. Un metodo rapido consiste nell'esportare il tema Web predefinito e quindi usare il codice originale come base per le personalizzazioni.
Eseguire il cmdlet seguente per creare un tema Web personalizzato duplicando il tema Web predefinito:
New-AdfsWebTheme –Name custom –SourceName default
Generare onload.js file
Il passaggio successivo consiste nell'esportare il tema Web personalizzato in modo da avere un file onload.js che è possibile aggiornare.
Eseguire il cmdlet seguente per esportare il tema Web personalizzato e generare un file onload.js:
Export-AdfsWebTheme –Name default –DirectoryPath c:\theme
Il file onload.js viene inserito nella cartella dello script nella directory specificata nel cmdlet . Nell'esempio la cartella specificata è c:\theme
.
Aggiungere personalizzazioni
A questo momento si è pronti per modificare il contenuto onload.js e aggiungere codice logico personalizzato per gli scenari. Come accennato, assicurarsi di aggiungere il codice personalizzato alla fine del file onload.js.
Vedere la sezione seguente esempi per i frammenti di codice che illustrano le personalizzazioni comuni.
Cambiare il file di destinazione onload.js
Dopo aver aggiunto le personalizzazioni, è necessario aggiornare il tema Web AD FS per usare il file onload.js anziché il file onload.js originale.
Eseguire il cmdlet seguente per impostare il file onload.js come destinazione per le definizioni dei temi Web:
Per AD FS in Windows Server 2016 e versioni successive:
Set-AdfsWebTheme -TargetName custom -OnLoadScriptPath "c:\theme\script\onload.js"
Per AD FS in Windows Server 2012 R2:
Set-AdfsWebTheme -TargetName custom -AdditionalFileResource @{Uri='/adfs/portal/script/onload.js';path="c:\theme\script\onload.js"}
Applicare personalizzazioni ad AD FS
L'ultimo passaggio consiste nell'applicare le personalizzazioni alle pagine di accesso di AD FS.
Eseguire il cmdlet seguente per aggiornare AD FS con le personalizzazioni:
Set-AdfsWebConfig -ActiveThemeName custom
Esempi
Gli esempi seguenti forniscono codice personalizzato che è possibile aggiungere al file onload.js per configurare le pagine di accesso di AD FS.
Nota
Aggiungere sempre codice personalizzato alla fine del file onload.js.
Modificare la stringa del titolo della pagina di accesso
La pagina di accesso basata su moduli di AD FS visualizza un titolo sopra i campi di input dell'utente. Il valore predefinito del titolo è "Accedi con l'account aziendale".
Sostituire il valore stringa predefinito con una stringa personalizzata aggiungendo il codice seguente al file onload.js. Nel codice impostare il valore del parametro loginMessage.innerHTML
sulla stringa personalizzata da usare per il titolo.
// Sample code to change page title string
// Check if loginMessage element is present
var loginMessage = document.getElementById('loginMessage');
if (loginMessage)
{
// If loginMessage element is present, change title to custom value
loginMessage.innerHTML = 'Custom title string value';
}
Consenti l'autenticazione con il nome dell'account SAM
La pagina di accesso basata su moduli di AD FS supporta due metodi di accesso per impostazione predefinita:
-
userPrincipalName": A user principal name (UPN), such as
user@contoso.com'. -
samAccountName
: un nome di account di Security Account Manager (SAM) qualificato di dominio, comecontoso\user
ocontoso.com\user
.
Si consideri uno scenario in cui tutti gli utenti si trovano nello stesso dominio e gli utenti conoscono solo il nome dell'account SAM. È possibile aggiornare la pagina di accesso per consentire agli utenti di accedere usando solo il nome dell'account SAM.
Abilitare l'accesso dagli account SAM solo aggiungendo il codice seguente al file onload.js. Nel codice impostare il valore del parametro userNameValue
sul dominio desiderato.
// Sample code to enable user login from SAM account name only
if (typeof Login != 'undefined'){
Login.submitLoginRequest = function () {
var u = new InputUtil();
var e = new LoginErrors();
var userName = document.getElementById(Login.userNameInput);
var password = document.getElementById(Login.passwordInput);
// Update login method with desired domain value
if (userName.value && !userName.value.match('[@\\\\]'))
{
var userNameValue = 'contoso.com\\' + userName.value;
document.forms['loginForm'].UserName.value = userNameValue;
}
// Check for user name errors
if (!userName.value) {
u.setError(userName, e.userNameFormatError);
return false;
}
// Check for password errors
if (!password.value)
{
u.setError(password, e.passwordEmpty);
return false;
}
// Update the form page
document.forms['loginForm'].submit();
return false;
};
}