1

mvc 3アプリでWindows認証を使用していますが、ActiveDirectoryの一部のグループのみにこのアプリにアクセスしたいと考えています。コントローラーで[Authorize]属性を使用しておらず、web.config構成のみを使用しています。

これが私のweb.configの設定方法です。

  <system.web>
    <authentication mode="Windows" />
    <authorization>
    <allow roles="EUsers" />
        <deny users="*" />
    </authorization>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <security>
        <authorization>
            <add accessType="Allow" roles="EUsers" />
            <add accessType="Deny" users="*" />
        </authorization>
    </security>
  </system.webServer>

また、IIS認証セクションでWindows認証とASP.NET強制を有効にしました。ユーザー(およびEUsersのメンバー)でアプリにアクセスしようとしていますが、常にユーザーとパスワードの入力を求められます。何か忘れましたか?私は何か間違ったことをしていますか?

4

2 に答える 2

3

コントローラーで [Authorize] 属性を使用しておらず、web.config 構成のみを使用しています。

それは単に間違っています。ASP.NET MVC アプリケーションでは、web.config を使用して承認を制御しないでください。[Authorize]属性を使用する必要があります。そう:

[Authorize(Roles = "EUsers")]
于 2012-09-24T13:00:34.003 に答える
1

コメント セクションで、まだ機能していないことがわかります。これは、明示的に users = "*" に割り当てられた "Deny" と、アクセス許可の優先規則の結果である可能性があると思います

権限の競合を解決するためのいくつかのルールを次に示します。

通常、「拒否」権限は「許可」権限よりも優先されます。オブジェクトに直接適用されるアクセス許可 (明示的なアクセス許可) は、親 (グループなど) から継承されたアクセス許可よりも優先されます。近親者から継承されたアクセス許可は、遠い先祖から継承されたアクセス許可よりも優先されます。そのため、オブジェクトの親フォルダーから継承されたアクセス許可は、オブジェクトの「祖父母」フォルダーから継承されたアクセス許可よりも優先されます。同じレベル (直接設定または継承、および「拒否」または「許可」という点で) にある異なるユーザー グループからのアクセス許可は累積的です。したがって、ユーザーが 2 つのグループのメンバーである場合、一方には「読み取り」の「許可」権限があり、もう一方には「許可」権限があります。もちろん、上記の他のルールに応じて、ユーザーは読み取りと書き込みの両方のアクセス許可を持ちます。通常、拒否アクセス許可は許可アクセス許可よりも優先されますが、常にそうとは限りません。明示的な「許可」権限は、継承された「拒否」権限よりも優先される場合があります。

アクセス許可の優先順位の階層は次のように要約できます。優先順位の高いアクセス許可がリストの一番上に表示されます。

  1. 明示的な拒否
  2. 明示的な許可
  3. 継承された拒否
  4. 継承許可
于 2013-09-30T18:27:23.233 に答える