web-dev-qa-db-ja.com

ローカル認証を使用してWindows認証を取得できませんIIS

そこで、イントラネットテンプレートを使用して、新しいASP.NET MVCプロジェクトを作成しました。 web.configには適切な値が含まれます(例:<authentication mode="windows"/>)。

VS Webサーバーを使用してWebアプリを起動すると、すべてが正常に見えます-ページに私のWindowsドメインとユーザー名とすべてが表示されます。ただし、これはOperaとSafari、およびIEとFFで動作します。これは、Windows認証をまったく使用していないことを示しています。私の知る限り、これはIE/FF以外のブラウザでは機能しません)。

次のステップは、ローカルIISを介して機能させることです。 www.mysite.mydomainを127.0.0.1にポイントするホストファイルエントリを作成します。だからIIS www.mysite.mydomainにバインドしてWebサイトを作成し、Windows認証を有効にし、匿名認証を無効にします。

次のようにWindows認証を有効にするためにIEとFFを設定しました:

[〜#〜] ie [〜#〜]

  1. イントラネットグループにURLを追加する
  2. 詳細設定でWindows認証が有効になっていることを確認します

[〜#〜] ff [〜#〜]

「www.mysite.mydomain」をnetwork.automatic-ntlm-auth.trusted-uris構成設定に追加します。

しかし、www.mysite.mydomainをIE/FFにダイヤルアップすると、ログインプロンプトが表示されます。興味深いことに、ここでWindowsログインを入力しても、失敗し、ログインプロンプトが表示されます。再び。

ここにはActive Directoryはありませんが、ローカルアカウントで正常に機能するはずだというのが私の理解です。

他に何もする必要はありません。助言がありますか?

編集:最近Active Directoryの使用に切り替えましたが、問題は残ります。

編集:ログインプロンプトをキャンセルすると、次の情報を含む「IIS 7.5詳細エラー」ページに移動します。

HTTPエラー401.2-権限がありません認証ヘッダーが無効なため、このページを表示する権限がありません。**

64
David

Windows認証が機能するためには、hostsファイルで指定されている whitelist ドメインが必要です。

迅速なアクセスのために上記のリンクからコピーされました:

  1. DisableStrictNameCheckingレジストリエントリを1に設定します。これを行う方法の詳細については、マイクロソフトサポート技術情報の記事 281308 を参照してください。
  2. [スタート]ボタン、[ファイル名を指定して実行]の順にクリックし、regeditと入力して[OK]をクリックします。
  3. レジストリエディターで、次のレジストリキーを見つけてクリックします:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  4. [MSV1_0]を右クリックし、[新規]をポイントして、[複数行文字列値]をクリックします。
  5. BackConnectionHostNamesと入力し、Enterキーを押します。
  6. BackConnectionHostNamesを右クリックし、[変更]をクリックします。
  7. [値のデータ]ボックスに、ローカルコンピューター上にあるサイトのホスト名またはホスト名を入力し、[OK]をクリックします。
  8. レジストリエディターを終了し、IISAdminサービスを再起動します。
124
Kevin Stricker

ユーザー名の前にドメインを入れてみましたか?

DOMAIN\username

ドメインアカウントを持っていない場合は、ユーザー名の前にマシン名を付けてみてください。

MYCOMPUTER\myusername
6
James Johnson

私は最近、同じ問題を解決するために3日間を費やしました。これは、一方のサーバーが正常に認証され、もう一方のサーバーが失敗する負荷分散セットアップで発生していました。問題の調査-そして最終的に解決-それは負荷分散環境とは無関係であることが判明し、Windows認証を使用して認証するときにサーバーで発生する可能性があり、サーバーがActive Directoryによって認識される名前以外で呼び出されます

1。Kerberosロギングを有効にする

問題を正しく診断するには、IISサイトをホストしているマシンでKerberosロギングを有効にする必要があります。これを行うには、次のレジストリエントリを追加します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

レジストリ値の追加LogLevel ValueType REG_DWORDおよび値x1.

ロギングをオンにして認証しようとすると、Windowsアプリケーションログにエラーが記録されます。エラーを無視できますKDC_ERR_PREAUTH_REQUIRED(これはハンドシェイクの一部にすぎません)がエラーを取得した場合KDC_ERR_C_PRINCIPAL_UNKNOWNこれは、ADコントローラーがサーバーを認識しないため、必要なことを意味します以下の手順に従ってください。

2。KDC_ERR_C_PRINCIPAL_UNKNOWN

kDC_ERR_C_PRINCIPAL_UNKNOWNを取得している場合、「mysite.mydomain.com」という名前は、ADがマシンを認識する方法とは異なるため、有効なkerberosチケットを提供できません。その場合、ADの「 'www.mysite.mydomain」のサービスプリンシパル名(SPN)を登録する必要があります。

ADコントローラーで、次のコマンドを実行します-ドメイン管理者特権が必要です。

Setspn -A HTTP/mysite.mydomain YOUR_MACHINE_HOSTNAME

。アプリケーションプールにカスタムIDを使用

最後に、NetworkServiceを使用する代わりに、Active Directoryに属するカスタムアカウントをアプリケーションプールで使用するようにします。これは、アプリケーションプールの詳細設定で行うことができます。

そして..出来上がり。


注:問題は、同じマシンに複数のSPNを登録することに関連している可能性があります(その場合、重複したSPNを削除するコマンドを実行する必要がありますが、これは事実ではありません。また、サイトに別のバインディング(カスタム名を使用しない)をhtttp:// localhost:custom_port_numberなどのように追加して、認証が機能するかどうかを確認してください。それが機能する場合、これはあなたが私が持っていた同じ問題に苦しんでいるという余分な兆候です。

5
kabaros

Windows認証がインストールまたは有効になっているかどうかを確認する必要があります。奇妙に聞こえるかもしれませんが、IIS 7では、さまざまな認証方法をインストールして有効にする必要があります。チェックアウト http://support.Microsoft.com/kb/942043/ =詳細については、以下の引用セクションを参照してください。

原因1
Webアプリケーションは、統合Windows認証を使用するように構成されています。ただし、Windows認証機能は有効になっていません。または、ApplicationHost.configファイルまたはWeb.configファイルの統合Windows認証ネイティブモジュールセクションが無効です。この問題を解決するには、解決方法1を参照してください。

オリジナル
通常、IIS)でホストされているasp.net Webページを表示しようとしてログインプロンプトを受信した場合、資格情報が受信されなかった、またはあなたがいないことを意味しません。 t認証済み。つまり、Webサイトが実行されているアカウントには、ファイルを操作するための適切な権限がありません。

IIS 6および7では、アプリプールを実行するユーザーアカウントを簡単に変更できます。アプリプールIDを、このために特別に設計されたより多くのアクセス権を持つアカウントに変更してください。既存のアカウント(IUSR_?Network Service?)に固執すると、そのアカウントに、Webサイトが保存されているディレクトリに対する追加のアクセス許可を付与できます。

この記事は特にBizTalkを対象としていますが、ほとんど参照されておらず、IISおよびアプリプールに関する権限の問題のトラブルシューティングに焦点を当てています: http://msdn.Microsoft.com/en -us/library/aa954062.aspx

4
Peter

ローカルIISを使用する理由local IIS Expressを使用できますか?

もしそうなら、これを試してください。 IIS ExpressではデフォルトでWindows認証がfalseに設定されています。

変化する

<windowsAuthentication enabled="false">

applicationhost.configファイル(「C:\ Users [Profile]\Documents\IISExpress\config」フォルダーの下)で「true」に変更します。これは私のために動作します。

3
Raul Uria

Espen Burudの答えを読んだ後、ルートのweb.configを変更して問題を解決しました。

<allow users="*" />

<deny users="?" />

Windows認証を必要とするページはルートではなく、deny users ?を持つ独自のweb.configを持つサブディレクトリにありますが、Windows認証が機能しませんでした。どうやら、それが機能するためにはルートのユーザーを拒否する必要があります。

IIS configで匿名認証が有効になっています。これは問題ではありません。上記のweb.configの変更後、Windows認証は機能しました。

0
Roland

Windows認証を有効にしたときにこのエラーが発生しました。 Windowsログインに基づいてユーザーを認証したかったのですが、アプリケーションにログインページがありません。

Web configファイルに以下を追加して、エラーを修正しました。タグsystem.webの下で、authentication mode="None"authentication mode="Forms"に変更しました。

タグappSettingsの下に、add key="owin:AutomaticAppStartup" value="false"を追加しました

0
Rakesh Karthik