私は現在のWindowsユーザーがサイトへのアクセスを許可されているかどうかをチェックするMVCサイト用の単純なアクションフィルタを作成しようとしています。なんらかの理由で、filterContext.HttpContext.User.Identity
オブジェクトは常にユーザ名なしで匿名に設定されます。私はさまざまな段階(OnAuthenticateとOnAuthorize)でそれをつかもうとしましたが、それは常に匿名です。ASP.NET IDのパイプラインでWindowsのアイデンティティは常に匿名です
私は現在、(実際にはWindowsの認証機能を設定するthis exampleに続く)IISで有効になって匿名と Windows認証を持っている、と私は私のweb.configファイルのsystem.web
ノードで次のブロックを持っている:
<authentication mode="Windows" />
<authorization>
<allow users="*" />
<deny users="?" />
</authorization>
しかし何らかの理由で、アイデンティティは常にユーザー名なしの匿名です。私はここで何かを逃している必要があります。 IISでWindows認証が設定されていると、ユーザー名とパスワードの組み合わせが表示されます(実際にはHTTP401.1エラー0xc000006d
で失敗しますが、開発用にカスタムホストヘッダーが設定されている可能性があります)。私はまた、私のサイトがのインターネットゾーンにあると判断され、回答が常にイントラネットのゾーンにサイトを追加するように指定されているため、これが示唆されている記事をいくつか読んだことがあります。これは実際の解決策ではなく、救済策のようだ。
理想的には、私は次のことを持っているしたいと思います:
- ユーザーが自分のサイト舞台裏
- を閲覧、自分のWindowsユーザー名を拾い、アプリ によって管理許可されたユーザーに対して認証され
- ユーザーが正常に認証されました。ページが読み込まれました。ユーザーは誰も認証されていません。
これを達成するためには何が必要ですか?
ご協力いただきありがとうございます。より多くの文脈を提供できるかどうか教えてください。
編集:は、私は、Windows 7 SP1上でこれを実行している追加するのを忘れ、オープン> =
<system.web>
<identity impersonate="true" />
</system.web>
OR
プロジェクトをクリックしないソリューションをお試しください7.5
有効にしていることを確認しますWindows IDの前に401が設定されます。さもなければあなたの身元は匿名になります。イントラネットゾーンまで私は問題が一度もありませんでした。 localhostを使用して認証するときに問題が生じる可能性があります。 –