本番サーバーで実行されているアプリケーションは、ユーザーがアプリケーションにアクセスしているマシンのログイン ユーザー名にどのようにアクセスできますか? たとえば、私は現在、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>