web-dev-qa-db-ja.com

ユーザー認証をすべて許可または許可しないフォルダー内のweb.config

複数の調査aspxページを含むフォルダーがあります。これらのaspxページにアクセス許可を設定する必要があります。 5つの異なるページがあり、特定のユーザーがアクセスできるのは1つだけです。ユーザーを許可および拒否するweb.configファイルを追加しましたが、機能しません。ユーザー名を許可してdeny="?"を追加した場合、アクセス権はありませんが、別のユーザーを追加した場合は、私のものを削除して拒否オプションを削除すると、システムにログオンする権限が得られます。拒否するとアクセスできますが、すべてのユーザーがページにアクセスできます。

ユーザー資格情報を追加し、アクセスできないすべての匿名ユーザーを拒否します。誰かが私が間違っていることの正しい方向を教えてくれますか? Windowsログオン資格情報を読み取っていない、または取得していない可能性がありますか? Visual Studio 2012のエンティティフレームワークを使用しています。

これは私がやったことです:

   //Web Config that allows and denies:
   <?xml version="1.0"?>
        <configuration>
        <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
     </system.web>

    <location path="QualityCheckSurvey.aspx">
    <system.web>
      <authorization>
        <allow users="DomainName\User2" />
        <deny users="?" /> 
      </authorization>
    </system.web>
    </location>
    </configuration>

認証モードをWindowsに設定しました。

編集パーミッションが正しく設定されていないようです。しかし、まだ機能していません。 *を拒否し、USER1を許可すると、ユーザーはログイン要求でプロンプトが出されてもアクセスできません。ログインウィンドウのダイアログボックスは、使用しているユーザーがアクセスできる場合でも、3回ポップアップし続けます。それを否定する? (匿名)は、拒否を削除し、USER1で許可タグのみを持っている場合でも、すべてのユーザーがアクセスできるようにします。残りのユーザーは引き続きアクセスできます...現在ローカルで実行していますが、IIS(Windowsと基本認証)で認証を設定すると、まったく同じことが行われます。..

編集これは私が使用している実際のコードです。このパス「」では3人のユーザーのみが許可されています。このweb.configファイルは、5種類の調査が含まれる調査フォルダー内にあります。この1つの調査のみが特定のユーザーを許可し、残りの調査は誰でもアクセスできます。

     <?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>

  <location path="QualityCheckSurvey.aspx">
    <system.web>

      <authorization>
        <deny users="?" />
        <allow users="OEP\kevinh, OEP\shabierg, OEP\heilened" />
        <deny users="*" />
      </authorization>

    </system.web>
  </location> 

アプリケーションのルートにあるメインweb.cofinで、認証モードをWindowsに設定しました。

     <authentication mode="Windows">

<!--<forms loginUrl="~/Account/Login.aspx" timeout="2880" />-->
    </authentication>
13
Kerieks

あなたの質問ではフォルダ名があると言いましたが、web.configではパス上のファイル名のみを指定しました。以下のようにfoldername/filename.aspxを使用します。 deny users = "?"の代わりにdeny users = "*"を使用します。

<location path="foldername/QualityCheckSurvey.aspx">
    <system.web>
        <authorization>
            <allow users="DomainName\User2"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

[〜#〜] edit [〜#〜]

これは、同じアプリケーションに複数のweb.configファイルがあるように見えます。混乱を避けるために、調査フォルダーにあるものを削除し、ルートフォルダーweb.configにこのコードを追加します。

 <?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <authentication mode="Windows" />
    </authorization>
  </system.web>

  <location path="survey/QualityCheckSurvey.aspx">
    <system.web>
      <authorization>
        <allow users="OEP\kevinh, OEP\shabierg, OEP\heilened" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location> 

調査フォルダーはルートフォルダー内にあると想定しています。

13
Cherian M Paul

プロジェクトの作成後にWindows認証がプロジェクトに追加された場合のこのエラーの修正

それは一口です。既存のプロジェクトにWindows認証を追加したときに、この問題が発生していました。それが機能する前に私がする必要があるいくつかの重要なことがありました:

1。ソリューションエクスプローラーで、プロジェクトをクリックし、F4を押します。これにより、プロジェクトのプロパティが開きます。
2。プロジェクトのプロパティと開発サーバーで、次の変更を行います。
-匿名認証:無効
-Windows認証:有効
3。 Web.configの下の<system.web>に以下を含めます。

<authorization>
  <allow users="DOMAIN\user"/>
  <deny users="*"/>
</authorization>

4. Web.configの下の<appSettings>で引き続き:

<add key="owin:AutomaticAppStartup" value="false"/>


これが私のために働いたものです。何か間違ったことをしている場合は、お知らせください。
これは、プロジェクトの作成後にWindows認証を使用している将来の個人に役立つことを願っています。

0
Trevor Nestman
<deny users="?" /> 
<allow users="DomainName\User2" />
<deny users="*" /> 
0
Samiey Mehdi