Расширенная настройка страниц входа AD FS

службы федерации Active Directory (AD FS) (AD FS) в Windows Server 2012 R2 и более поздних версий поддерживает настройку интерфейса входа пользователя. Для большинства сценариев можно использовать встроенные командлеты Windows PowerShell для настройки страниц входа AD FS. Рекомендуемый подход — использовать встроенные команды Windows PowerShell для настройки по возможности. Дополнительные сведения см. в разделе о настройке входа пользователей AD-FS.

Иногда может потребоваться предоставить интерфейс входа, который не может быть включен с помощью команд PowerShell, которые входят в AD FS. Вы можете настроить интерфейс входа, добавив пользовательский код в файл onload.js , предоставленный AD FS. Код файла выполняется на всех страницах AD FS.

Рекомендации

Прежде чем приступить к настройке страниц входа AD FS, ознакомьтесь со следующими важными рекомендациями.

Внимание

Любые изменения настройки, влияющие на потоки перенаправления или модифицируют параметры протокола, используемые AD FS, не поддерживаются.

  • Файл onload.js выполняется на всех страницах AD FS, включая страницы входа на основе форм, страницы обнаружения домашней области и т. д. Всегда убедитесь, что пользовательский код выполняется только как предполагаемое и непредвиденное.

  • AD FS поставляется со встроенной веб-темой, называемой по умолчанию. Невозможно изменить содержимое onload.js, создающее веб-тему по умолчанию. Чтобы обновить файл onload.js, создайте и используйте настраиваемую веб-тему для страниц входа AD FS. Дополнительные сведения см. в разделе о настройке входа пользователей AD-FS.

  • Исходный файл onload.js для веб-темы по умолчанию также содержит код для обработки отрисовки страниц для различных форм-факторов. Рекомендуемый подход к настройке заключается в добавлении пользовательского кода логики в существующий файл onload.js. Не изменяйте исходное содержимое файла onload.js.

  • При ссылке на HTML-элементы всегда проверка для существования элемента перед действием элемента. Этот шаг обеспечивает надежность и гарантирует, что пользовательская логика не выполняется на страницах, не содержащих этот элемент. Чтобы определить существующие элементы HTML, просмотрите html-источник на страницах входа AD FS.

  • Рекомендуется проверить настройки в альтернативной среде и выполнить тесты перед перемещением настроек на рабочие серверы AD FS. Этот шаг снижает вероятность предоставления конечным пользователям настроек перед проверкой.

Действия по настройке

В следующих разделах приведены действия по настройке содержимого файла onload.js для страниц входа AD FS.

Создание пользовательской веб-темы

Чтобы добавить пользовательскую логику в файл onload.js, первым шагом является создание пользовательской веб-темы. Быстрый способ — экспортировать веб-тему по умолчанию, а затем использовать исходный код в качестве основы для настроек.

Выполните следующий командлет, чтобы создать пользовательскую веб-тему, дублируя веб-тему по умолчанию:

New-AdfsWebTheme –Name custom –SourceName default

Создание файла onload.js

Следующий шаг — экспортировать настраиваемую веб-тему, чтобы у вас был onload.js файл, который можно обновить.

Выполните следующий командлет, чтобы экспортировать настраиваемую веб-тему и создать файл onload.js:

Export-AdfsWebTheme –Name default –DirectoryPath c:\theme

Файл onload.js помещается в папку скрипта в каталоге, указанном в командлете. В примере указанная папка c:\theme.

Добавление настройки

Теперь вы готовы изменить содержимое onload.js и добавить пользовательский код логики для сценариев. Как упоминание, обязательно добавьте пользовательский код в конец файла onload.js.

См. следующий раздел "Примеры" для фрагментов кода, демонстрирующих распространенные настройки.

Изменение целевого файла onload.js

После добавления настроек необходимо обновить веб-тему AD FS, чтобы использовать файл onload.js, а не исходный файл onload.js.

Выполните следующий командлет, чтобы задать файл onload.js в качестве целевого объекта для определений веб-темы:

  • Для AD FS в Windows Server 2016 и более поздних версиях:

    Set-AdfsWebTheme -TargetName custom -OnLoadScriptPath "c:\theme\script\onload.js"
    
  • Для AD FS в Windows Server 2012 R2:

    Set-AdfsWebTheme -TargetName custom -AdditionalFileResource @{Uri='/adfs/portal/script/onload.js';path="c:\theme\script\onload.js"}
    

Применение настроек к AD FS

Последним шагом является применение настроек к страницам входа AD FS.

Выполните следующий командлет, чтобы обновить AD FS с помощью настроек:

Set-AdfsWebConfig -ActiveThemeName custom

Примеры

В следующих примерах приведен пользовательский код, который можно добавить в файл onload.js для настройки страниц входа AD FS.

Примечание.

Всегда добавляйте пользовательский код в конец файла onload.js.

Изменение строки заголовка страницы входа

На странице входа на основе форм AD FS отображается заголовок над полями ввода пользователя. Значение заголовка по умолчанию — "Вход с помощью учетной записи организации".

Замените строковое значение по умолчанию настраиваемой строкой, добавив следующий код в файл onload.js. В коде задайте для loginMessage.innerHTML параметра настраиваемую строку, которая будет использоваться для заголовка.

// 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';
}

Принять вход с именем учетной записи SAM

Страница входа на основе форм AD FS поддерживает два метода входа по умолчанию:

  • userPrincipalName": A user principal name (UPN), such as user@contoso.com'.
  • samAccountName: доменное имя учетной записи диспетчера учетных записей безопасности (SAM), например contoso\user или contoso.com\user.

Рассмотрим сценарий, в котором все пользователи находятся в одном домене, и пользователи знают только имя учетной записи SAM. Вы можете обновить страницу входа, чтобы пользователи могли войти только с помощью имени учетной записи SAM.

Включите вход из учетных записей SAM, добавив следующий код в файл onload.js. В коде задайте для userNameValue параметра нужный домен.

// 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;
    };

}