1

我正在开发一个将部署在云中的 asp.net MVC Web 应用程序,并且应该支持以下身份验证方案:

  1. 内网域用户透明认证。这些用户应该能够在不登录的情况下访问应用程序。
  2. 互联网上任意非域用户的表单登录。这些用户应该看到一个使用表单身份验证的登录页面,并且成员资格由应用程序内部管理。
  3. 公共互联网上域用户的表单登录。他们应该能够使用与非域用户相同的登录表单,但使用他们的域凭据登录。

具有被动身份验证的 Active Directory 联合身份验证服务 (ADFS) 可以涵盖案例 #1 和 #3。因为它重定向到联合提供者的登录页面,所以它不包括#2 的情况。我知道我的应用程序的主动身份验证可能支持所有三种情况,但是关于如何实现的文档并不多。

理想情况下,我的应用程序应该有一种方法可以向 ADFS 联合提供程序验证域用户名和密码。

有谁知道这是否可能,如果可以,怎么做?

4

2 回答 2

2

对此的标准模式是带有拆分 DNS 的 ADFS - 用于 Intranet 的 IWA 和用于 Internet 的 Forms。

但是,ADFS 只能针对 AD 进行身份验证,因此无法实现选项 2。

我建议将IdentityServer用于选项 2 - 您可能必须根据您的成员“风味”对其进行自定义 - 然后联合 ADFS 和 IdentityServer。

IdentityServer 是免费/开源的。

于 2013-04-26T02:05:25.070 回答
0

要扩展 nzpcmad 的答案,您可以在 ADFS 管理控制台中的信任关系 > 声明提供者信任下设置 Active Directory 以外的声明提供者信任,它们有效地将 ADFS 与自定义 STS 服务链接起来。

您添加的条目将被添加到 ADFS 网站内的 Home Realm 发现页面,这样,验证用户将看到一个下拉列表,以便从本质上选择他们希望对其进行身份验证的声明提供者。

自动登录仍然适用于选择您的 Active Directory(ADFS 提供商)的内部用户,而其他提供商的成员将被重定向到他们选择的索赔提供商的网站,该网站通常会显示表单登录页面并针对后台进行身份验证。结束成员资格数据库,所有外​​部用户(不能提供 NTLM 或 Kerberos 令牌的用户都需要输入他们的详细信息 - 对于 AD 用户,这意味着他们必须输入他们的域\用户字符串(或 user@domain)和内部密码。

当然,您必须自己创建这些提供程序,在过去的 WIF 时代,这意味着使用相当笨重的自定义 STS 模板,但是您现在可以使用基于 OWIN 的简单 MVC5 站点来简化过程。或者,正如 nzpcmad 建议的那样,您可以考虑使用 IdentityServer。

于 2014-09-15T11:43:05.103 回答