我正在开发一个将部署在云中的asp.net MVC Web应用程序,并应支持以下身份验证方案:
具有被动身份验证的Active Directory联合身份验证服务(ADFS)可以涵盖案例#1和#3。由于它重定向到联合提供程序的登录页面,因此它不包括#2案例。我理解我的应用程序的主动身份验证可能支持所有三种情况,但是没有太多关于如何实现它的文档。
理想情况下,应用程序应该有一种方法可以使用ADFS联合提供程序对域用户名和密码进行身份验证。
是否有人知道这是否可行,若然,怎么办?
答案 0 :(得分:2)
此标准模式是带有拆分DNS的ADFS - 用于Intranet的IWA和用于Internet的Forms。
但是,ADFS只能对AD进行身份验证,因此无法实现选项2。
我建议将IdentityServer用于选项2 - 您可能必须根据您的“成员资格”自定义它,然后联合ADFS和IdentityServer。
IdentityServer是免费/开源的。
答案 1 :(得分:0)
要扩展nzpcmad的答案,您可以在信任关系>下的ADFS管理控制台中设置Active Directory以外的声明提供程序信任。声明提供商信任,他们有效地将ADFS与自定义STS服务链接。
您添加的条目将添加到ADFS网站内的Home Realm发现页面,以便向身份验证用户显示一个下拉列表,以基本上选择他们希望进行身份验证的声明提供程序。
自动登录仍然适用于选择Active Directory(ADFS提供商)的内部用户,而其他提供商的成员将被重定向到他们选择的声明提供商的网站,该网站通常会显示一个表单登录页面并进行身份验证一个后端成员资格数据库,所有外部用户(无法提供NTLM或Kerberos令牌都需要输入他们的详细信息 - 对于AD用户而言,这意味着他们必须输入他们的域\用户字符串(或用户@域) )和内部密码。
当然,您必须自己创建这些提供程序,在旧的WIF时代,这意味着使用相当笨重的自定义STS模板,但是现在您可以使用简单的基于OWIN的MVC5站点简化该过程。或者,正如nzpcmad建议的那样,您可以查看使用IdentityServer。