1

集成活動目錄組我在mvc 3應用程序中使用Windows身份驗證,並且我只想要一些我的活動目錄組訪問此應用程序。我沒有在我的控制器中使用[Authorize]屬性,只是我的web.config配置。將活動目錄組與Windows身份驗證aspnet mvc 3

這是怎麼設置我的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> 

我還啓用了Windows身份驗證和ASP.NET Impersation我的IIS授權部分。 我試圖用我的用戶(我是EUser的成員)訪問該應用程序,但它始終提示輸入我的用戶名和密碼。我忘了什麼嗎?難道我做錯了什麼?

回答

3

我沒有在我的控制器中使用[Authorize]屬性,只是我的web.config配置。

這簡直是錯誤的。在ASp.NET MVC應用程序中,您不應該使用web.config來控制授權。您應該使用[Authorize]屬性。所以:

[Authorize(Roles = "EUsers")] 
+1

有沒有辦法使用web.config? –

+0

爲此使用web.config是錯誤的。您可以使用它,但這不是推薦的方法來控制ASP.NET MVC應用程序中的授權。 –

+0

我刪除了授權部分並在我的控制器中使用[Authorize(Roles =「EUsers」)],但它仍然不起作用。我需要任何輔助配置嗎? –

1

我看到在評論部分,它仍然無法正常工作。我認爲這可能是「拒絕」被明確分配給用戶的結果=「*」和權限優先級規則

這裏是解決權限衝突的一些規則:

「拒絕」權限通常優先超過「允許」權限。 直接應用於對象的權限(顯式權限)優先於從父級繼承的權限(例如來自組)。 從近親繼承的權限優先於從遠程前輩繼承的權限。因此,從對象的父文件夾繼承的權限優先於從該對象的「祖父」文件夾繼承的權限,依此類推。 來自不同用戶組的權限(在直接設置或繼承方面,以及「拒絕」或「允許」方面)是累積的。因此,如果用戶是兩個組的成員,其中之一具有「讀」的「允許」權限,另一個具有「寫」的「允許」權限,則用戶將具有讀取和寫入權限 - 取決於當然,上面的其他規則。 雖然拒絕權限通常優先於權限,但情況並非總是如此。明確的「允許」權限可以優先於繼承的「拒絕」權限。

優先級的權限的層次結構可以概括如下,具有較高優先級的權限在列表的頂部列出:

  1. 明確的拒絕
  2. 明確允許
  3. 繼承拒絕
  4. 繼承允許
+0

你知道解決方案來解決這個問題嗎?我們如何強迫這個小組成爲一個明確的允許?或者讓這個團隊對這個拒絕進行優先考慮?據我的理由,你想阻止所有用戶(拒絕*),然後讓安全組訪問您的網站? – markwilde

+0

我相信,如果一個組未被明確允許,他們將無法訪問。優先權規定某人是兩個組的成員,一個被授予訪問權,另一個被拒絕訪問。這個人將被拒絕,但除非用戶是明確授予訪問權限的組成員,否則他們不應該有權訪問。我認爲答案是完全刪除行,因爲這會阻止任何人訪問。 – Thronk

+1

啊,我想我知道我的錯誤是什麼。我正在考慮將AD組添加到USERS而不是ROLES。那麼用戶將被授予隱式訪問權限,並且拒絕(*)將優先。所以我的問題有點不同。感謝您的快速跟進! – markwilde

相關問題