Я пишу приложение, для которого потребуется несколько форм аутентификации.
Приложение должно поддерживать аутентификацию в Active Directory, но иметь возможность вернуться к поставщику членства в SQL, если пользователь не находится в Active Directory. Мы можем справиться с ошибкой поставщика SQL в коде на основе предоставленного имени пользователя, потому что имя пользователя будет отличаться от формата имени пользователя Active Directory.
Это вообще возможно? Я имею в виду, могу ли я использовать членство и одновременно использовать как ActiveDirectoryMembershipProvider, так и SqlMembershipProvider, или мне придется использовать собственное?
Еще одна дополнительная сложность заключается в том, что я хотел бы автоматически аутентифицировать моих внутренних пользователей на основе аутентификации Windows обратно в AD, но использовать аутентификацию с помощью форм для пользователей, не входящих в нашу внутреннюю сеть, или пользователей, которые используют поставщик SQL.
Скорее всего, это будут отдельные серверы, один внутренний, а другой внешний, поэтому у меня много планов, чтобы выяснить репликацию данных и то, как я буду аутентифицировать пользователей AD, если они попадут на внешний сервер и т. Д.
Мне интересно, какие мысли возникают, когда я иду по этому пути. Возможно ли то, что я хочу делать, без того, чтобы кататься самостоятельно, или есть способ связать их вместе?
Спасибо за ответ.
Причина, по которой я спросил изначально, заключалась в том, что около 7 лет назад мне удалось заставить этот конкретный senerio работать с использованием IIS для аутентификации и последующей передачи учетных данных в веб-приложение Lotus Domino Server. Если пользователь не был аутентифицирован через Windows Authentication / ISS, тогда Domino обработает аутентификацию. Это было то, что я хотел здесь сделать, но действительно не мог придумать, как заставить это работать в IIS.
Что касается остальной части вашего ответа, я думаю, вы идете по тому пути, по которому мне нужно идти. Я обдумал это и много вертел в голове. В любом случае приложение будет несколько отличаться на двух серверах, поскольку в любом случае будет ограничен доступ к данным на внешнем сервере. Тот факт, что уже так много будет отличаться, я могу просто рассматривать их как два приложения, тем самым устраняя необходимость использования двух типов аутентификации в одном приложении в любом случае.
Я уже играю с идеей написать свое собственное окно аутентификации / входа в систему для внешнего сервера, и если пользователь попытается войти в систему со своими учетными данными AD на внешнем сервере, я смогу обнаружить это и перенаправить их на внутренний сервер. Если они не находятся в локальной сети или не подключены к VPN, они просто не получат доступа. Эта часть еще требует некоторого размышления, поэтому я не уверен.
В качестве дополнительной мысли - есть ли способ втянуть достаточно AD в базу данных SQL, чтобы позволить мне аутентифицировать пользователей в базе данных SQL с внешнего сервера, используя их учетные данные AD, без каких-либо проблем с безопасностью? Надеюсь, я четко печатаю то, о чем думаю ...
Еще раз спасибо!
Тим