Чуть позже, но вот, пожалуйста. Вы можете создать пользовательский поставщик учетных данных со своими полями, чтобы принимать учетные данные для входа (в зависимости от того, какую форму они могут принимать). Если вы хотите выйти за рамки этого и создать небольшой рабочий процесс, вам необходимо запустить модальное окно в методе SetSelected учетных данных. Затем вы можете в значительной степени использовать вашу реализацию GINA (без реальных функций GINA). Используйте тип CPUS, чтобы узнать, в каком режиме вы работаете (LOGON, LOCK_WORKSTATION, CHANGE_PASSWORD и т. Д.) И соответственно настроить свой пользовательский интерфейс.
Очевидно, что это не «рекомендуемый» подход (на самом деле довольно хакерский), но он самый простой. Одно предупреждение: у вас будут проблемы с таймаутами C-A-D и т. Д., Так что будьте готовы к некоторым сюрпризам.
Другой, возможно, более изящный способ - это создание собственного провайдера учетных данных с экраном входа / разблокировки (правильный путь). Затем предоставьте ссылки для запуска других рабочих процессов (например, сброс пароля). Вы можете создавать собственные экраны, которые запускаются при нажатии на конкретную ссылку, путем реализации метода CommandLinkClicked учетных данных.
Если у вас есть время и вы хотите сделать это правильно, я бы порекомендовал второй подход. В будущем вы избавите себя от множества головных болей.