2

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

3 に答える 3

1

サーバー上に Web アプリケーションをセットアップするときは、Document Security セクション (サーバーが実行している IIS のバージョンによって名前が変わりますが、そのようなものです) に移動し、匿名認証をオフにして、 Windows 認証について。これにより、サーバーはブラウザーから Windows ログイン認証を要求するように指示されます。(おそらく、私よりもファイルをよく知っている人web.configなら、これを編集して関連するビットを指すことができます。そうではないと思いますimpersonateが、知っていれば、私はこれまでのところ、 UI。)

于 2009-10-19T15:20:23.283 に答える
0

あなたの例では、ウェブサーバーが実行されているユーザー名を見つけています。あなたが求めているのは、ページにアクセスしているユーザーのユーザー名です。

次のようなことを試してください:

于 2009-10-19T15:21:06.043 に答える
0

ディレクトリ セキュリティを Windows 認証に設定しても機能しない場合は、基本認証に変更します。認証するドメイン名も指定する必要があります。これが、セキュリティを IIS レイヤーから DB に伝播させる唯一の方法でした。残念ながら、これにより、ユーザー名とパスワードがクリア テキストで送信されます。これは最善の解決策ではありませんが、物事はイントラネット上にあったため、ログイン手順の更新に取り組んでいる間はうまくいきました.

于 2009-10-19T16:29:26.113 に答える