使用 AD 身份验证(不是 ADFS)创建 MVC 应用程序

Posted

技术标签:

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

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

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

以下是我采取的步骤:

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

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

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

提前致谢

【问题讨论】:

【参考方案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"))

【讨论】:

以上是关于使用 AD 身份验证(不是 ADFS)创建 MVC 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

针对 ADAM 和 AD FS 的 ASP.NET MVC 3 SSO

MVC 5、WIF (System.IdentityModel) 和 ADFS 未实际进行身份验证,联合注销时出错

如何搭建一套Azure AD与ADFS集成身份的环境

使用 Azure Active Directory 或 ADFS 或 AD 的 SSO

共享点身份验证。如何从 ADFS 获取 SharePoint cookie

如何将ADFS用户添加到`AspNetUsers`中?