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(@” 您的域\一些广告组名称“))