IIS-401.3-不正


92

IISの使用を開始しようとしています。IISマネージャーで新しいサイトを作成し、それを自分のファイルシステムのフォルダーにマップし、フォルダーにindex.htmlを追加しました。このサイトのポートを85に設定しました。にアクセスしようとするhttp://localhost:85/index.htmlと、次のエラーメッセージが表示されます。

401.3-unathorized-Webサーバー上のこのリソースのアクセス制御リスト(ACL)構成または暗号化設定のため、このディレクトリまたはページを表示する権限がありません。

私はフォルダーのすべてのユーザーに読み取りアクセス権を与え、再試行しました。その後、ページにアクセスできました。

次に、自分のフォルダーのプロパティをwwwrootのプロパティと比較しました。wwwrootがIIS_IUSRSに対する読み取りアクセス権を持っていることがわかりました...同じことを自分のフォルダーで実行して再試行すると、上記のエラーが再度発生しました。匿名アクセスがデフォルトで有効になっていることを確認しましたが、まだこのエラーが発生します。

なぜこれが起こるのですか?問題を解決する正しい方法は何ですか?

回答:


168

私はこの同じ問題に数日間苦労してきました。これは、サイトがマップされているファイルシステムフォルダーのセキュリティユーザーアクセスプロパティを変更することで解決できます。ただし、IIS_IUSRSは、承認する必要がある唯一のアカウントではありません。

  • IIS管理コンソールのサイト構成の認証部分で、「匿名認証」の行を変更し、「特定のユーザー」として設定されているアカウントを確認します(私はIUSRです)。
  • 特定のユーザーとしてリストされているアカウントに、サイトのフォルダーに対する読み取りと実行の権限を付与します。

または

  • IIS管理コンソールのサイト構成の認証部分で、[特定のユーザー]ではなく[アプリケーションプールのID]を選択して、[匿名認証]行を変更します。

6
「アプリケーションプールID」のある匿名認証が機能することを確認しましたが、何らかの理由でIUSRに対応できませんでした。ありがとう。
fortboise 14

5
背後にあるロジックは、デフォルトではサイトが匿名認証を使用し、IUSRが匿名アカウントであることです。したがって、IISはIUSRアカウントを使用して、常に機能するとは限らないファイルシステム(Webサイトの物理パス)にアクセスします(ファイルシステムの多くはIUSRを受け入れないため)。これが401.3の原因です。ファイルシステムアクセスを変更する(ファイルへのアカウントアクセスを許可する)か、匿名アカウントをプールIDに変更する(プールIDはIIS_IUSRSにあり、通常はファイルにアクセスできます)ことにより、IISはファイルにアクセスするための十分なアクセス許可を持つ必要があります。
Lex Li

58

ここに私のために働いたものがあります。

  1. アプリプールIDを、フォルダーへのアクセス許可を割り当てることができるアカウントに設定します。
  2. ソースディレクトリとすべての関連ファイルに、アプリプールIDプロパティに割り当てられたアカウントへのファイルの読み取り権限が付与されていることを確認します。
  3. IISのサーバールートノードで、アプリプールIDから継承するように匿名ユーザーを設定します。(これは私が苦労した部分でした)

サーバープールをアプリプールIDから継承するように設定するには、次の手順を実行します。

  • IISマネージャーを開く(inetmgr)
  • 左側のペインで、ルートノード(サーバーホスト名)を選択します。
  • 中央のペインで「認証」アプレットを開きます
  • 「匿名認証」を強調表示します
  • 右側のペインで「編集...」を選択します(ダイアログボックスが開きます)。
  • 「アプリケーションプールID」を選択します

9
#3)修正された問題:IISのサーバールートノードで、匿名ユーザーがアプリプールIDから継承するように設定します。(これは私が苦労した部分でした)
ラビ・ラム

「ありがとう」のコメントを書くべきではないことは承知していますが、感謝の気持ちを表明する必要があると思います。これを理解する方法はありません。
ジョニークック

@RaviRam:従った手順を説明してください。初心者として一歩一歩。「IIS、サーバールートノードで、匿名ユーザーをアプリプールIDから継承するように設定する」とはどういう意味ですか。
アンブレイカブル2017

@RaviRam-コマンド「inetmgr.exe」を実行すると、IIS管理画面が表示されます。これから、私の回答で説明されている手順に従います。おそらく、管理者としてコマンドを実行する必要があります。 msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker 2017

別の回答で述べたように、ルートレベルでanon auth設定を変更する必要がないことがわかりました。サイトまたは仮想ディレクトリレベルでもその設定を変更できます
jaycer

15

TL; DR;

ほとんどの場合、次のアカウント(1つまたは両方)へのアクセスを許可するだけで十分です。

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

アクセス権

  1. 読み取りと実行
  2. フォルダーの内容を一覧表示する
  3. 読んだ

それでおしまい!

詳細な説明については、次をお読みください...


  1. IISを開き、アプリケーションを選択します
  2. 右側の[ 認証 ]をクリックします。
  3. ここで「匿名認証」を選択します。
  4. 次のダイアログがポップアップします。

ここに画像の説明を入力してください

上記の画像で選択されている内容に応じて、WebアプリケーションフォルダーのACLへのアクセスを許可します。

  • 特定のユーザー:両方にアクセスを許可しますIUSR(私の場合)+IIS AppPool\DefaultAppPool
  • アプリケーションプールID:アクセスIIS AppPool\DefaultAppPoolのみを許可

IIS AppPool\DefaultAppPool accountは、新しいIIS WebアプリケーションのデフォルトのAppPoolアカウントです。カスタムアカウントを設定している場合は、カスタムアカウントを使用してください。


アカウントに次の権限を付与します。

  1. Read & Execute
  2. List folder contents
  3. Read

ここに画像の説明を入力してください


13

静的コンテンツを扱っているので...

Webサイトのルートとして機能するフォルダー-右クリック> [プロパティ]> [セキュリティ]の場合、「ユーザー」がリストに表示されますか?そうでない場合は、「追加...」をクリックして入力し、完了したら必ず「適用」をクリックしてください。


3

この解決策を試してください:

/server/38222/iis-7-5-windows-7-http-error-401-3-unauthorized

また、IIS AppPoolを実行しているユーザーがそのフォルダー/ファイルへの読み取りアクセス権を持っているかどうかを確認します。

これを見てください:

http://www.iis.net/learn/manage/configuring-security/application-pool-identities

これも見てください:

http://www.iis.net/learn/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in-iis


1

他の誰かがこれに遭遇した場合に備えて。これらのすべての手順をトラブルシューティングしましたが、MACから一部のファイルを解凍したため、Microsoftは通知なしに自動的にファイルを暗号化しました。何時間もフォルダーのアクセス許可を設定しようとした後、ファイル名が緑色であることがわかりました。これは、ファイルが暗号化されており、フォルダーのアクセス許可が正しい場合でもIISが同じエラーをスローすることを意味します。


このまったく同じ問題に時間をかけすぎました。単にここに妥協します。私はここでIISとEFSへのアクセスを検索することになりましたが、あなたの答えが私の問題の根本的な原因であるMacからの展開されたzipファイルに私を導きました。私の特定のシナリオは、IISでインプロセスでホストされているASP.NET Coreが起動しない問題でした。イベントログメッセージやstdoutログなどがありません。localhost経由でアクセスすると、web.configが無効であるがソースが表示されないというエラーメッセージが表示されました。明らかにファイルにアクセスできましたが、内容を読み取ることができませんでした。
アーロン

1
  1. 新しいサイトを作成し、[サイト]フォルダーを右クリックして[サイトの追加]をクリックします
  2. サイト名を入力します。
  3. 物理パスを選択
  4. IPアドレスを選択
  5. ポートを変更
  6. OKをクリックします
  7. アプリケーションプールに移動
  8. サイトプールを選択
  9. クリックアドバンス設定を右クリック
  10. .Net CLRバージョンを「管理コードなし」に変更します。
  11. IDを "ApplicationPoolIdentity"に変更します
  12. サイトのホームページに移動し、[認証]をクリックします
  13. AnonymousAuthenticationを右クリックして[編集]をクリックします
  14. アプリケーションプールIDを選択
  15. OKをクリック
  16. ブーム!

ルートにはweb.configを追加します

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="React Routes" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

0

無許可の受信に関連して発生する可能性のある別の問題は、IISからの認証設定で使用されるプロバイダーに関連しています。私の場合、Windows認証プロバイダーを「ネゴシエート」に設定すると、その問題が発生しました。「NTLM」オプションを選択した後、アクセスが許可されました。

認証プロバイダーの詳細情報

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/providers/



0

(IUSRの代わりに)アプリケーションプール認証を使用している場合は、次のようにする必要があります。JeanSun によるこのチェックリストは、IISの401エラーに対処するために見つけることができる最良の方法です。


IISマネージャーを開き、サイトが展開されているWebサイトまたはアプリケーションフォルダーに移動します。

  1. 詳細設定を開きます(右側の操作ウィンドウにあります)。
  2. アプリケーションプール名を書き留めてから、このウィンドウを閉じます
  3. 認証アイコンをダブルクリックして認証設定を開きます
  4. Windows認証を無効にする
  5. [匿名認証]を右クリックして、[編集]をクリックします
  6. [アプリケーションプールID]ラジオボタンを選択し、[OK]をクリックします。
  7. 左側のIISマネージャーツリーから[アプリケーションプール]ノードを選択し、手順3で書き留めたアプリケーションプール名を選択します
  8. 右クリックして[詳細設定]を選択します
  9. プロセスモデル設定を展開し、[ビルトインアカウント]ドロップダウンリストからApplicationPoolIdentityを選択して、[OK]をクリックします。
  10. アプリケーションプールの詳細設定ページを保存して閉じるには、もう一度[OK]をクリックします
  11. 管理者コマンドラインを開きます(CMDアイコンを右クリックし、[管理者として実行]を選択します。これは、スタートメニューのどこか、おそらく[アクセサリ]の下にあります。
  12. 次のコマンドを実行します。

    icacls <path_to_site> /grant "IIS APPPOOL\<app_pool_name>"(CI)(OI)(M)
    

    例えば:

    icacls C:\inetpub\wwwroot\mysite\ /grant "IIS APPPOOL\DEFAULTAPPPOOL":(CI)(OI)(M)
    

特にステップ5.と6.は見過ごされがちで、Webでほとんど言及されていません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.