У нас был набор схожих требований, и мы подошли к нему, чтобы самим реализовать аутентификацию и управление профилями, а после аутентификации пользователя использовать FormsAuthentication для безопасности сайта.
Для сценариев, в которыхпредоставляются имя пользователя и пароль (форма входа, клиент wcf), вы можете вызвать метод LogonUser .После аутентификации пользователя вы можете использовать его аутентифицированное имя пользователя в FormsAuthentication.
Сценарий, в котором пользователь должен автоматически войти в систему, будет немного сложнее, поскольку вам потребуется анонимная аутентификация, доступная на главном сайте.для поддержки ручного входа в систему.
Способ, который мы решили, заключался в том, чтобы добавить отдельное веб-приложение в качестве подкаталога основного приложения и настроить его для поддержки только проверки подлинности Windows.Когда этот портал поражен внутренними пользователями, мы принимаем их логин AD из Request.ServerVariables ("logon_user"), шифруем его токеном, действующим в течение 5 секунд, а затем отвечаем. Перенаправляем пользователя в основное приложение в зашифрованной сетивойдите в строку запроса.
Если основное приложение видит этот параметр в строке запроса, оно дешифрует его, проверяет, находится ли оно в допустимом интервале времени, а затем использует эти учетные данные для входа пользователя в систему с использованием FormsAuthentication (это может звучать много, ноописание на самом деле занимает больше места, чем код).
Надеюсь, это даст вам некоторые идеи.