【问题标题】:Create MVC application using AD authentication (Not ADFS)使用 AD 身份验证(不是 ADFS)创建 MVC 应用程序
【发布时间】:2017-08-06 13:47:22
【问题描述】:

我正在 Visual Studio 2017 中创建一个新的 MVC Intranet 应用程序。

我想使用 Active Directory 来验证(和授权)各种控制器,但不是 Active Directory 联合服务器(因为我们不使用它)。

以下是我采取的步骤:

  1. 新建项目 -> ASP.NET Web 应用程序 (.NET Framework)
  2. 选择 MVC
  3. 点击更改身份验证
  4. 选择“工作或学校帐户”
  5. 选择“本地”

现在,本地授权机构需要元数据文档 URL。我知道这是我们没有的 ADFS 的外部 url。

如何设置我的应用程序以使用我们的 AD?我还需要使用 AD 中的组(例如,允许 WebAdmin 组中的用户访问 Admin 控制器等)。

提前致谢

【问题讨论】:

    标签: asp.net-mvc authentication asp.net-mvc-5 active-directory


    【解决方案1】:

    看来我使用了错误的设置。如果要使用标准 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>
    

    您现在可以使用以下内容装饰您的控制器类/操作方法:

    [Authorize(Roles = @"YourDomain\Some AD Group Name")]

    或常用代码:

    User.IsInRole(@"YourDomain\Some AD Group Name"))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-30
      • 2016-06-08
      • 2017-06-18
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多