Нет, я не думаю, что то, что вы предлагаете, звучит как то, что нужно делать.
Скорее, вы должны основывать безопасность на подключаемой архитектуре (например, IPrincipal
), а затем каким-то образом настроить ваше приложение на использование вашей собственной инфраструктуры безопасности или просто WindowsPrincipal
(что происходит от IPrincipal
) :
Например, у вас может быть параметр конфигурации, который указывает, какого поставщика безопасности использовать. Если он настроен на использование вашей собственной системы, он запросит учетные данные у пользователя и заполнит Thread.CurrentPrincipal
экземпляром, основанным на вашей системе.
Если сконфигурировано для использования AD, он просто тихо собирается установить Thread.CurrentPrincipal
в WindowsIdentity.GetCurrent()
(в WindowsPrincipal
).
Посмотрите, как ASP.NET или WCF работают с безопасностью - это в основном то, что они делают.