Personalização avançada das páginas de logon do AD FS
O AD FS (Serviços de Federação do Active Directory) no Windows Server 2012 R2 e em versões posteriores dá suporte à personalização da experiência de logon do usuário. Para a maioria dos cenários, é possível usar os cmdlets internos do Windows PowerShell para configurar as páginas de logon do AD FS. A abordagem recomendada é usar, sempre que possível, os comandos internos do Windows PowerShell para a personalização. Para saber mais, confira Personalização de logon do usuário do AD-FS.
Às vezes, pode ser necessário fornecer uma experiência de logon que não é habilitada por meio dos comandos do PowerShell que acompanham o AD FS. Para isso, é possível configurar a experiência de logon adicionando um código personalizado ao arquivo onload.js fornecido com o AD FS. O código do arquivo é executado em todas as páginas do AD FS.
Considerações
Antes de começar a personalizar as páginas de logon do AD FS, examine as considerações importantes a seguir.
Importante
Nenhuma alteração de personalização que afete os fluxos de redirecionamento ou modifique os parâmetros de protocolo usados pelo AD FS é compatível.
O arquivo onload.js é executado em todas as páginas do AD FS, incluindo páginas de logon baseado em formulário, páginas de descoberta de realm inicial e assim por diante. Certifique-se sempre de que o código personalizado seja executado somente conforme pretendido e não inesperadamente.
O AD FS é fornecido com um tema da Web interno chamado padrão. Não é possível modificar o conteúdo de onload.js que cria o tema da Web padrão. Para atualizar o arquivo onload.js, crie e use um tema da Web personalizado para as páginas de logon do AD FS. Para saber mais, confira Personalização de logon do usuário do AD-FS.
O arquivo onload.js original do tema da Web padrão também contém o código para lidar com a renderização de página de diferentes fatores forma. A abordagem de personalização recomendada é anexar seu código lógico personalizado ao arquivo onload.js existente. Não modifique o conteúdo original do arquivo onload.js.
Ao fazer referência a elementos HTML, sempre verifique a existência do elemento antes de agir sobre ele. Essa etapa fornece robustez e garante que a lógica personalizada não seja executada em páginas que não contenham esse elemento. Para identificar os elementos HTML existentes, exiba a fonte HTML nas páginas de logon do AD FS.
É recomendado validar as personalizações em um ambiente alternativo e executar testes antes de movê-las para os servidores do AD FS de produção. Essa etapa reduz as chances de expor os usuários finais a personalizações não validadas.
Etapas de personalização
As seções a seguir fornecem as etapas para personalizar o conteúdo do arquivo onload.js para as páginas de logon do AD FS.
Criar um tema da Web personalizado
Para adicionar sua lógica personalizada ao arquivo onload.js, a primeira etapa é criar um tema da Web personalizado. Um método rápido é exportar o tema da Web padrão e usar o código original como base para as personalizações.
Execute o seguinte cmdlet para criar um tema da Web personalizado duplicando o tema da Web padrão:
New-AdfsWebTheme –Name custom –SourceName default
Gerar o arquivo onload.js
A próxima etapa é exportar o tema da Web personalizado para ter um arquivo onload.js que possa ser atualizado.
Execute o seguinte cmdlet para exportar o tema da Web personalizado e gerar um arquivo onload.js:
Export-AdfsWebTheme –Name default –DirectoryPath c:\theme
O arquivo onload.js é colocado na pasta script do diretório especificado no cmdlet. No exemplo, a pasta especificada é c:\theme
.
Adicionar personalizações
Agora você está pronto para modificar o conteúdo de onload.js e adicionar o código lógico customizado relativo aos seus cenários. Conforme mencionado, certifique-se de adicionar o código personalizado ao final do arquivo onload.js.
Confira a seção Exemplos a seguir para obter trechos de código que demonstram personalizações comuns.
Alterar o arquivo onload.js de destino
Depois de adicionar as personalizações, atualize o tema da Web do AD FS para usar o seu arquivo onload.js em vez do arquivo onload.js original.
Execute o seguinte cmdlet para definir o seu arquivo onload.js como o destino para as definições de tema da Web:
Para o AD FS no Windows Server 2016 e posterior:
Set-AdfsWebTheme -TargetName custom -OnLoadScriptPath "c:\theme\script\onload.js"
Para o AD FS no Windows Server 2012 R2:
Set-AdfsWebTheme -TargetName custom -AdditionalFileResource @{Uri='/adfs/portal/script/onload.js';path="c:\theme\script\onload.js"}
Aplicar personalizações ao AD FS
A última etapa é aplicar as personalizações às páginas de logon do AD FS.
Execute o seguinte cmdlet para atualizar o AD FS com as personalizações:
Set-AdfsWebConfig -ActiveThemeName custom
Exemplos
Os exemplos a seguir fornecem um código personalizado que pode ser adicionado ao arquivo onload.js para configurar as páginas de logon do AD FS.
Observação
Sempre anexe o código personalizado ao final do arquivo onload.js.
Alterar a cadeia de título da página de logon
A página de logon baseado em formulário do AD FS exibe um título acima dos campos de entrada do usuário. O valor de título padrão é "Entre com sua conta organizacional".
Substitua o valor da cadeia de caracteres padrão por uma cadeia personalizada adicionando o código a seguir ao arquivo onload.js. No código, defina o valor do parâmetro loginMessage.innerHTML
para a cadeia de caracteres personalizada a ser usada para o título.
// 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';
}
Aceitar o logon com um nome de conta de SAM
A página de logon baseado em formulário do AD FS dá suporte a dois métodos de entrada por padrão:
userPrincipalName": A user principal name (UPN), such as
user@contoso.com`.samAccountName
: um nome de conta de SAM (Gerenciador de Contas de Segurança) qualificado pelo domínio, comocontoso\user
oucontoso.com\user
.
Considere um cenário em que todos os usuários estão no mesmo domínio e sabem apenas o nome da conta de SAM. É possível atualizar a página de logon para permitir que os usuários entrem usando somente o nome da conta de SAM.
Habilite apenas o logon de contas de SAM adicionando o código a seguir ao arquivo onload.js. No código, defina o valor do parâmetro userNameValue
para o domínio desejado.
// 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;
};
}