我需要一个好的建议,并想知道解决方案是否可行。现在我的一个客户有一个通用的登录应用程序,它基于使用成员资格提供程序的Forms身份验证(ASP.NET)。所有内部用户都使用其AD凭据登录,外部用户使用自定义用户名和密码。两者都通过Forms身份验证包装。现在新的提议是用ADFS替换此Forms身份验证。我通过互联网浏览了各种文章,但未能得出结论。让我用ADFS扩展点列出我的发现。
1)可以通过https://blogs.technet.microsoft.com/cloudpfe/2013/12/27/how-to-create-a-custom-attribute-store-for-active-directory-federation-services-3-0/中提到的方法为ADFS声明添加自定义属性。
2)可以通过方法https://blogs.msdn.microsoft.com/jenfieldmsft/2014/03/24/build-your-own-external-authentication-provider-for-ad-fs-in-windows-server-2012-r2-walk-through-part-1/添加第二级认证(或多因素认证)。在这里,我理解在AD完成第一级认证之后,只有我们的外部提供商才会出现。
所以我有一个普遍的问题,即用ADFS实现我正在寻找的东西是非常可能的。请告诉我。
答案 0 :(得分:1)
这取决于用户帐户的存储位置。如果内部和外部用户都在AD中,您只需重定向到ADFS即可。
如果internal位于AD中且external位于不受信任或其他LDAP源中,则使用ADFS 2016可以链接到这两个帐户存储,并仍然可以将身份验证卸载到ADFS。
如果external在SQL中,您可以使用前面的虚拟目录将其作为LDAP存储(上一个选项)进行投影,也可以使用IdentityServer。
如果externs是其他东西,你需要IdentityServer。
谢谢// Sam(@MrADFS)
答案 1 :(得分:0)
是 - 您可以添加自定义属性商店。
是 - 您可以添加自定义身份验证器。
更好的方法可能是将thinktecture的IdentityServer 3.0用于ASP.NET Identity部件,然后联合IdentityServer和ADFS。