3

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

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

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

4

2 回答 2

4

我已经设法设置了一个适合使用 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. 为 VS2012 安装 Identity and Access 工具
  8. 右键单击您的项目以选择身份和访问工具。
  9. STS 元文档的路径将是https://<your VM url>/FederationMetadata/2007-06/FederationMetadata.xml(如果您的证书是自签名的,您可能需要手动下载此文件)。
  10. 回到您的 VM,在 ADFS 中为您的应用程序创建一个信赖方信任。
  11. 再次运行您的 MVC 应用程序,您应该被重定向到您的 VM 进行身份验证,然后再次返回您的应用程序(但这次使用 https)。
  12. 如果您使用的是默认 MVC 模板,则在右上角假设您已正确设置声明,您应该会看到 Hi, <user>@<domain>

我遵循的主要文章如下:

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 url -https://localhost例如。第二个是用于标识正在尝试进行身份验证的应用程序的标识符。输入的标识符之一必须与 MVC 4 应用程序 web.config 中 wsFederation 节点的领域属性匹配。
  2. 登录时,用户名的格式应为 <domain>\<username>
  3. 我无法让 Windows 身份验证与 IE 以外的任何浏览器一起使用。为了让这个设置与 Chrome 一起工作,我必须在 adfs/ls 应用程序的 web.config 中更改本地身份验证类型的顺序,以便首先出现表单身份验证。为此,请在 VM 上打开 IIS 管理器,展开默认网站/adfs/ls,右键单击 ls 并选择探索。
  4. 在撰写本文时,我无法使用我自己创建的 AD 用户登录 - 我可能只是没有正确设置它。最初设置此设置时,我建议尝试与您在创建 VM 时通过 azure 门户创建的管理员用户连接。
  5. 一旦我最终设法正确地进行身份验证,AntiForgeryToken html 助手开始抛出异常,谈论丢失的声明。确保您已将声明规则添加到您的信赖方信任,该规则设置名称或名称 ID 声明。然后在 Application_Start 中执行以下操作:AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name;如此所述。

还值得注意的是,身份和访问工具允许您使用 Azure ACS 和更值得注意的开发 STS 设置身份验证。对于我的要求,我需要能够与 ADFS 集成,但如果您只是在尝试基于声明的身份验证,那么其中之一可能是比我上面经历的过程更好的选择。

于 2013-07-25T21:41:26.160 回答
0

考虑 ADFS 和 ws-federation。

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

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

这种方法的学习曲线很小,但好处是:

  • 跨域sso
  • 免费支持多种浏览器(某些浏览器可能不支持基于 kerberos/ntlm 的广告身份验证)
  • 在 Intranet 和 Internet 中工作
  • 支持高级场景,例如您可以设置您的云 Office365 以针对您的本地 adfs 进行身份验证
  • adfs 2.0 是可从 msdn 下载的免费组件
于 2013-07-23T21:45:32.780 回答