2009-09-10 2 views
2

У моей компании большое приложение, которое мы заканчиваем. Он использует WCF в качестве back-bone с Active Directory для аутентификации. Это отлично работает для одного из двух сайтов, поскольку модель аутентификации - это Windows, и вы должны быть частью домена для входа на сайт. Вопрос, который у меня есть, связан с другим сайтом, который доступен извне. Он устанавливает ClientCredentials.Windows.ClientCredential для прокси-вызова с конкретным пользователем/паролем для олицетворения AD-пользователя, поэтому работает полная модель безопасности. Все это работает точно так же, как и ожидалось.Получить зарегистрированный пользователь

Вопрос, который у меня есть, в Интернете я могу использовать HttpContext.Current.User.Identity.Name, чтобы получить в настоящее время зарегистрированного пользователя из части проверки подлинности Forms, но для этого мне нужно убедиться в том, что система. Веб-ссылка существует против DLL, в которой я сейчас работаю. Наши базовые объекты взяты из упрощенного класса, который не знает о System.Web. Есть ли способ узнать пользователя Forms, который зарегистрирован внутри этого проекта базового объекта? Я попробовал System.Security.Principal, но это только дает мне доступ к учетным записям Windows из того, что я мог сказать, и не принесет мне никакой пользы.

Я знаю, что это вариант, чтобы просто ссылаться на System.Web и делать с ним, но это звучит действительно klugy для меня, а не лучший вариант, поэтому я надеюсь на некоторые советы здесь.

ответ

4

Thread.CurrentPrincipal.Identity будет сделать то же самое, как HttpContext.CurrentContext...

Он возвратит идентификатор, связанный с текущим запущенным потоком, который в большинстве случаев, является ли пользователь *.

Примечание: * Если вы используете делегирование/олицетворение или работаете как учетная запись службы, она вернет учетную запись, в которой когда-либо была идентифицирована нить, но в вашем случае это не похоже на то, что вы делаете контекстная идентификация.

+0

Perfect. Именно то, что я искал. – RubyHaus

2

Если имя пользователя в виде строки достаточно для вас,

Environment.UserName 
// Environment.UserDomainName and MachineName can also be useful 

От MSDN:

Получает имя пользователя лица, запустившего текущий поток.

Смежные вопросы