web-dev-qa-db-ja.com

401 Unauthorized:資格情報が無効なため、アクセスが拒否されました

IIS Expressを使用してMVC4アプリケーションを展開しています。このWebサイトは同じコンピューターで完全に動作します。しかし、LANではエラー401が発生します。

<authentication mode="Forms">
    <forms loginUrl="~/" slidingExpiration="true" timeout="20">
    </forms>
</authentication>

ホームコントローラーで

[HttpPost]
[AllowAnonymous]        
public ActionResult Index(LoginModel model, string returnUrl)
{
}

管理者モードでコマンドプロンプトからIISサーバーを起動しています。 IISは、エラー401でリクエストに応答します。

どんな手掛かり?

63

これは古い投稿であることがわかりましたが、IIS 8.5でも同じエラーが発生しました。これが別の人が同じ問題を経験するのを助けてくれることを願っています(似たようなタイトルの他の質問で私の問題の概要が見えませんでした)。

すべてがアプリケーションプールIDで正しくセットアップされているように見えましたが、引き続きエラーが発生しました。掘り下げた後、匿名ユーザーがアプリケーションプールIDまたは特定のユーザーの資格情報を使用するための設定があります。何らかの理由で、私のデフォルトは特定のユーザーになりました。設定をアプリプールIDに変更すると、問題が修正されました。

  1. IISマネージャー→サイト→Webサイト
  2. 「認証」をダブルクリックします
  3. 匿名認証を選択
  4. [アクション]パネルから[編集]を選択します
  5. [アプリケーションプールID]を選択し、[OK]をクリックします

うまくいけば、他の人の時間を節約できます!

163
ctc

IIS 7を使用している場合は、次のようにします。

  1. サイトを選択します。
  2. エラーページをクリックします。
  3. 機能設定を編集します。
  4. 詳細なエラーを選択します。

楽しい。

27
Suraj Shrestha

次のようにiisで匿名認証を有効にしていることを確認してください。

enter image description here

11
testCoder

誰かがまだこれを探している場合、これは問題を解決しました:

これが役立つ人には、これが私の命を救った...

IIS 7が401を取得した理由を把握するのが困難でした-不正:資格情報が無効なためアクセスが拒否されました...これを行うまで...

  1. IISを開き、401の原因となっているWebサイトを選択します
  2. 「IIS」ヘッダーの下の「認証」プロパティを開きます
  3. 「Windows認証」項目をクリックし、「プロバイダー」をクリックします
  4. 私にとって問題は、NegotiateがNTLMを上回っていたことでした。舞台裏で何らかのハンドシェイクが行われたと思いますが、実際には認証されませんでした。 NTLMを一番上の場所に移動し、BAMがそれを修正しました。

これが見つかったリンクです

10
Steve

私はその古い質問に気付きましたが、これは私の検索で出てきました。最近構築され、初めてデプロイされたMVCアプリケーションについても同様の問題があり、認証メカニズムは完全にハッシュ化されていませんでした。

私の場合、IISの設定ではなく、[AllowAnonymous]で装飾されていないコントローラーでした。 Layout.cshtmlでRender.Action/Html.Actionを使用していましたが、ユーザーが認証されていませんでした。そのため、レイアウトは認証されていないコンテキストで認証されたアクションをロードしようとしました。

アクションをAllowAnonymousに更新すると、問題はなくなり、 これが原因でした

これが誰かを助けることを願っています。

7
poorraj

同様の問題に直面しました。

フォルダーが共有され、認証済みユーザーのアクセス許可が提供され、問題が解決しました。

2
Jishnu

今日も同様の問題がありました。何らかの理由で、私のGETリクエストはうまくいきましたが、PUTリクエストは私のWCF WebHttpサービスで失敗しました

以下をWeb.configに追加すると問題が解決しました

 <system.web>
  <authentication mode="Forms" />
 </system.web>
2
Vijay Vepakomma

MVCフォルダーで空のプロジェクトを作成し、サーバーにアプリケーションをデプロイしたときにこのエラーに直面しました。私の問題は、Web.configで認証を定義しなかったため、この行をsystem.webタグに追加するだけでした。

<system.web>
    <authentication mode="None"/>
</system.web>
2
Chris Gong

IIS 8.5で同じ問題に直面しました。私にとって有効なソリューションは、IISを変更して詳細なエラーを表示することでした。 sna2sthaからの回答を参照してください。しかし、詳細なエラーメッセージを運用環境のブラウザに転送することはお勧めできません。 httpErrors-SectionのexistingResponse属性を追加/変更したため、IISは既存のAsp.net応答を処理しませんでした。

 <httpErrors existingResponse="PassThrough" />

これは私のために動作します。

1
Saftpresse99

私の場合、
私のアプリケーションはMVCで開発されており、私のホームコントローラークラスは[Authorize]で装飾されていたため、この問題が発生していました。
アプリケーションで認証を必要としないため、削除しました。

0
Rahul Nikate