0

我創建在Visual Studio 2017年使用AD驗證(不ADFS)

我想使用Active Directory進行身份驗證(和授權)各種控制器,而不是Active Directory中的新的MVC Intranet應用程序創建MVC應用程序聯邦服務器(因爲我們不使用它)。

下面是我所採取的步驟:

  1. 新建項目 - > ASP.NET Web應用程序(.NET框架)
  2. 選擇MVC
  3. 單擊更改認證
  4. 選擇「工作或學校帳戶
  5. 選擇 '內部部署'

無內部部署當局需要一個元數據文檔URL。我知道這是ADFS的外部URL,我們沒有。

如何設置我的應用程序以便使用我們的AD?我還需要利用AD中的羣組(例如,允許WebAdmin羣組中的用戶訪問控制器等)。

在此先感謝

回答

0

看來我使用了錯誤的設置。如果您想使用標準AD,請選擇Windows身份驗證。

「工作或學校帳戶」似乎只適用於ADFS。

一旦您的應用程序初始化,請轉至web.config。

你會看到這樣的事情

<system.web> 
    <compilation debug="true" targetFramework="4.5.2" /> 
    <httpRuntime targetFramework="4.5.2" /> 
    <authentication mode="Windows" /> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
    <httpModules> 
     <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /> 
    </httpModules> 
</system.web> 

我們需要在AD組的功能添加到我們的web.config。完成此操作後您的System.Web部分應該是這樣的:

<system.web> 
    <compilation debug="true" targetFramework="4.5.2" /> 
    <httpRuntime targetFramework="4.5.2" /> 
    <authentication mode="Windows" /> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 

    <!--NEW--> 
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"> 
     <providers> 
     <clear /> 
     <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
     </providers> 
    </roleManager> 


    <httpModules> 
     <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /> 
    </httpModules> 
    </system.web> 

現在,您可以用下面的來裝飾你的控制器類/ action方法:

[授權(角色= @「您的域\一些廣告組名稱 「)]

或通常的代碼:

User.IsInRole(@」 您的域\一些廣告組名稱「))