Как приложение, работающее на производственном сервере, может получить доступ к имени пользователя для входа на машину, с которой пользователь обращается к приложению? Например, в настоящее время я подключился к своей машине в корпоративной интрасети INTRA. Мое имя пользователя будет INTRA \ Username.
Я добавил определенные имена пользователей в базу данных и хочу сравнить это имя пользователя интрасети с базой данных, чтобы ограничить доступ к приложению и использовать имя пользователя во всем приложении.
В настоящее время я использую следующий код для доступа к имени пользователя:
Private username As String = Thread.CurrentPrincipal.Identity.Name
Это отлично работает на localhost, но при аутентификации в базе данных на сервере разработки я получаю следующую ошибку:
Не удалось войти в систему для пользователя NT AUTHORITY \ ANONYMOUS LOGON.
Это неправильный подход? Возможно ли это вообще или это слишком большая проблема безопасности? Это приложение будет внутренним приложением интрасети, работающим в магазине IE. Соответствующие части web.config, которые уже существуют, включают:
<identity impersonate="true"/>
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
</authorization>
<connectionStrings>
<add name="CONNSTR" connectionString="Initial Catalog=DATANAME;Data Source=servername;Integrated Security=True;" providerName="System.Data.SqlClient"/>
</connectionStrings>