Active Directory开发环境

时间:2013-07-23 21:16:00

标签: asp.net active-directory

我需要将ASP.NET Web应用程序与Active Directory集成 - 基本上他们希望能够通过AD进行身份验证和授权。

我意识到这是相对简单的,但我想知道的是我如何模拟AD进行开发和测试。我没有可用的AD(现在),即使我有可用于运行它的硬件,也不要珍惜设置它。

我还有哪些其他选择?我在几个地方看过ADAM mentioned,但这似乎并没有提供我需要的联合服务(而且似乎有些过时)。是否可以使用Azure?我想把成本(时间和金钱)降到最低。

2 个答案:

答案 0 :(得分:3)

我已设法设置适合使用Microsoft Azure VM进行开发的活动目录环境。

以下是我完成此工作的步骤的简要摘要。虽然设置AD和ADFS听起来很可怕,但是Windows Server 2012界面让它变得非常容易,除非我在下面提到一些问题 - 它们也需要一段时间才能安装。

  1. 创建新的azure Windows Server 2012 VM并添加http和https的端点。
  2. 在VM上安装AD角色
  3. 在VM上安装ADFS角色
  4. 创建一个ASP.NET MVC 4应用程序(在您的开发计算机上)并验证它是否正常工作。
  5. 通过IIS运行应用程序(不是IIS Express - 这只会使SSL等更容易)。
  6. 确保网站设置了https绑定
  7. Install the Identity and Access tool for VS2012
  8. 右键单击您的项目以选择身份和访问工具。
  9. STS元文档的路径为https://<your VM url>/FederationMetadata/2007-06/FederationMetadata.xml(如果您的证书是自签名的,则可能需要手动下载此文件)。
  10. 返回您的VM,在ADFS中为您的应用程序创建信赖方信任。
  11. 再次运行您的MVC应用程序,您应该被重定向到您的VM进行身份验证,然后再次返回您的应用程序(但这次使用https)。
  12. 如果您使用默认的MVC模板,请在右上角假设您已正确设置声明,您应该看到Hi,&lt; user&gt; @&lt; domain&gt;
  13. 我遵循的主要文章如下:

    http://blogs.rondewit.com/post/MVC-2b-ADFS-20-Federated-Authentication.aspx http://garymcallisteronline.blogspot.co.uk/2013/01/aspnet-mvc-4-adfs-20-and-3rd-party-sts.html

    下面是我点击的陷阱列表(没有特别的顺序)。

    1. 设置依赖方信任时,请手动输入数据,并确保正确设置依赖部分WS-Federation Passive协议URL和依赖方信任标识符。第一个是完成身份验证后ADFS将重定向回的https网址 - 例如https://localhost。第二个是用于标识尝试进行身份验证的应用程序的标识符。输入的其中一个标识符必须匹配MVC 4应用程序web.config中wsFederation节点的realm属性。
    2. 登录用户名时,格式应为&lt; domain&gt; \&lt; username&gt;
    3. 我无法让Windows身份验证与IE以外的任何浏览器一起使用。对于使用Chrome的此设置,我必须更改adfs / ls应用程序的web.config中的本地身份验证类型的顺序,以便首先显示表单身份验证。要实现这一点,请在您的VM上打开IIS管理器,展开默认网站/ adfs / ls,右键单击ls并选择explore。
    4. 在撰写本文时,我无法使用自己创建的AD用户登录 - 我可能只是没有正确设置它。在最初设置时,我建议您在创建VM时尝试与通过azure门户创建的管理员用户建立连接。
    5. 一旦我最终设法正确验证AntiForgeryToken html助手开始抛出异常,谈论缺少声明。确保您已向索撒方信任添加了声明规则,该规则设置了名称或名称ID声明。然后在Application_Start中执行以下操作:AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name;,如here所述。
    6. 同样值得注意的是,Identity and Access工具允许您使用Azure ACS设置身份验证,更值得注意的是开发STS。根据我的要求,我需要能够与ADFS集成,但如果您只是尝试基于声明的身份验证,其中一个可能比我上面经历的过程更好。

答案 1 :(得分:0)

考虑ADFS和ws-federation。

Ws-federation是一种企业sso协议,以sso方式为您提供跨域身份验证/授权。 Adfs是位于活动目录之上的协议的免费实现。设置相对容易。

但是如果客户端应用程序需要ws-federation身份提供程序,则可以将提供程序替换为任何兼容的提供程序,您自己的或身份服务器,这是另一个免费实现,但可以使用成员资格提供程序。另一方面,完全自定义的实现将为您提供设置和服务的机会 任意身份。

这种方法的学习曲线很小,但有益的是:

  • 跨域sso
  • 免费支持多个浏览器(某些浏览器可能不支持基于kerberos / ntlm的广告验证)
  • 在内联网和互联网上工作
  • 支持高级方案,例如您可以将云Office365设置为针对您的本地adfs进行身份验证
  • adfs 2.0是可从msdn
  • 下载的免费组件