ASP.NETアプリケーションでWindows認証を使用しようとしています。アプリを表示しようとすると、ログインページが表示されます。ブラウザから手動でログインしなくても機能させるにはどうすればよいですか?
<system.web>
<authentication mode="Windows"></authentication>
<anonymousIdentification enabled="false"/>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
<customErrors mode="Off"></customErrors>
<identity impersonate="true"></identity>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime />
</system.web>
Most likely causes:
No authentication protocol (including anonymous) is selected in IIS.
Only integrated authentication is enabled, and a client browser was used that does not support integrated authentication.
Integrated authentication is enabled and the request was sent through a proxy that changed the authentication headers before they reach the Web server.
The Web server is not configured for anonymous access and a required authorization header was not received.
The "configuration/system.webServer/authorization" configuration section may be explicitly denying the user access.
<authentication>
<anonymousAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="false">
</iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
ネゴシエートプロバイダーを削除することで機能するようになりました。
<windowsAuthentication enabled="true">
<providers>
<add value="NTLM" />
</providers>
</windowsAuthentication>
IISExpressを使用したWindows認証
web.configを更新します
Web.configファイルがWindows認証を有効にし、匿名認証も拒否していることを確認してください。アプリが匿名認証に失敗した場合、HttpContext.Current.User.Identity.Name
は空白になります。設定は次のようになります。
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
エラー401.2 Unauthorizedエラー401.2 Unauthorized: Logon failed due to server configuration error
が表示される場合があります。その場合は、指定した資格情報に基づいて、このディレクトリまたはページを表示する権限があることを確認してください。また、Webサーバーで認証方法が有効になっていることを確認してください。
applicationhost.configの更新
また、IISExpressのapplicationhost.configファイルを更新する必要がある場合もあります(心配しないでください-私も知りませんでした)。これは、基本的にIIS設定ツールのファイルバージョンです。このツールでは、Webサーバー自体を設定できます。applicationhost.config
ファイルを見つけるのは難しい場合があります。
%userprofile%\documents\iisexpress\config\applicationhost.config
または
%userprofile%\my documents\iisexpress\config\applicationhost.config
見つかったら、次の行を更新します(enabled=true
に特に注意してください):
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
SharePointを含むほとんどすべてのイントラネットアプリにWindows認証を使用しています。ブラウザーがWindows資格情報をサイトに自動的に送信しない場合、従業員はログインする必要があります。
IEでは、これはブラウザの設定の問題です。 ChromeとFirefoxがWindowsログインを自動的に送信するように設定する方法もあると思います。私はChromeはクライアントの)ウィンドウのインターネット設定に従いますIE。ユーザー認証オプションを「現在のユーザー名とパスワードで自動ログオン」に設定してみてください。
それがどこにあるかについては、下のスクリーンショットをご覧ください。
また、これには、ユーザーのブラウザがWindowsトークンをアプリケーションに送信することに注意してください。アプリケーションはこのトークンのソースを理解し、信頼する必要があります。これは、ユーザーとアプリケーションの両方が存在する「ドメイン」のサポートで動作します。(デバッグ中に)1台のマシンで動作すると思います。しかし、これをネットワーク上の複数のコンピューターで機能させるには、ドメインの作成を検討する必要があります。ドメインを作成する一般的な方法は、Active Directoryです。
お知らせ下さい。
VS 2017でWebアプリをデバッグするときに、[ソリューションパス] \。vs\config\applicationhost.configを更新する必要があることがわかりました。認証セクションを次のように置き換えました。
<authentication>
<anonymousAuthentication enabled="false" userName="" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="false">
</iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>