0

IIS 7.5 で実行されているカスタム HTTP モジュールがあり、要求は同じ Active Directory 環境内の異なるマシンから送信されます。サーバー側で実行されている HTTP モジュールで、リクエストから現在のユーザー (ユーザーの AD 名? ) を取得する (または、LDAP パスがわかっている場合は検索する) ことはできますか?

私は AD の専門家ではありませんがHTTPApplication、モジュール内のインスタンス (以下を参照) を介して取得されるさまざまなプロパティを調べましたが、明確なものは何も見当たりません。

Private Sub AuthenticateRequest(sender As Object, e As EventArgs)

        Dim oHttpApplication As HttpApplication = CType(sender, HttpApplication)
        '...
        ' Get AD Info from oHttpApplication.Request?
        '...
End Sub

これが可能かどうか、またはこれを達成する方法を知っている人はいますか?

アップデート:

以下に私のソリューションを追加しました。

4

2 に答える 2

1

私の解決策-VB.NETで:

Dim username As String = Thread.CurrentPrincipal.Identity.Name

注:私のリンクの質問への答えは、PrincipalContextオブジェクトを使用することになりUserPrincipalますが、私のシナリオでは、必要なのはユーザー名だけでした。また、そのソリューションをテストするときは、次の行を指摘したいと思います。

pc = new PrincipalContext(ContextType.Domain, "active.directory.domain.com")

ドメインがなくても問題なく動作します。

pc = new PrincipalContext(ContextType.Domain)

ですから、これが将来誰かに役立つことを願っています!

于 2013-02-25T16:03:54.893 に答える
0

IIS設定を変更します。

IISでは、匿名認証を無効にし、 Windows認証を有効にします。

Webアプリケーション構成ファイルを変更します。

なりすましを有効にする

<configuration>
  <system.web>
    <identity impersonate="true"/>
  </system.web>
</configuration>

C#コード:

using System.Security.Principal


var user = WindowsIdentity.GetCurrent().Name;
于 2013-02-24T01:25:48.503 に答える