web-dev-qa-db-ja.com

ASP.NETでWindows認証を使用する

ASP.NETアプリケーションでWindows認証を使用しようとしています。アプリを表示しようとすると、ログインページが表示されます。ブラウザから手動でログインしなくても機能させるにはどうすればよいですか?

web.config

  <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>

更新後のエラーIIS Express

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.

applicationhost.config

<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>
15
Antarr Byrd

ネゴシエートプロバイダーを削除することで機能するようになりました。

  <windowsAuthentication enabled="true">
    <providers>
      <add value="NTLM" />
    </providers>
  </windowsAuthentication>
2
Antarr Byrd

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>

これは記事です

11
malbarmawi

SharePointを含むほとんどすべてのイントラネットアプリにWindows認証を使用しています。ブラウザーがWindows資格情報をサイトに自動的に送信しない場合、従業員はログインする必要があります。

IEでは、これはブラウザの設定の問題です。 ChromeとFirefoxがWindowsログインを自動的に送信するように設定する方法もあると思います。私はChromeはクライアントの)ウィンドウのインターネット設定に従いますIE。ユーザー認証オプションを「現在のユーザー名とパスワードで自動ログオン」に設定してみてください。

それがどこにあるかについては、下のスクリーンショットをご覧ください。

enter image description here

また、これには、ユーザーのブラウザがWindowsトークンをアプリケーションに送信することに注意してください。アプリケーションはこのトークンのソースを理解し、信頼する必要があります。これは、ユーザーとアプリケーションの両方が存在する「ドメイン」のサポートで動作します。(デバッグ中に)1台のマシンで動作すると思います。しかし、これをネットワーク上の複数のコンピューターで機能させるには、ドメインの作成を検討する必要があります。ドメインを作成する一般的な方法は、Active Directoryです。

お知らせ下さい。

9
Mzn

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> 

詳細: https://stackoverflow.com/a/4813716/555142

4
dajo
  1. Open IIS(Windows + R 'inetmgr')
  2. IIS Server(Root Node)
  3. ダブルクリック-「認証」
  4. Windows認証-右クリックして[有効にする]を選択します
  5. フォーム認証-右クリックして「無効」を選択します
  6. IISサーバーを再起動します
3
Mihir Kale