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