【发布时间】:2011-02-19 02:47:08
【问题描述】:
我想知道 ADFS2.0 是否为用户提供了一种通过自定义存储进行身份验证的方法? 1.0 版您只能使用 Forms/Windows Integrated/Cardspace 对 Windows 域中的用户进行身份验证。我有一个 ASP.NEt 网站,我希望用户通过 SQL 中的自定义存储进行身份验证,然后通过 ADFS2.0 处理向用户发出的声明...
【问题讨论】:
标签: adfs2.0
我想知道 ADFS2.0 是否为用户提供了一种通过自定义存储进行身份验证的方法? 1.0 版您只能使用 Forms/Windows Integrated/Cardspace 对 Windows 域中的用户进行身份验证。我有一个 ASP.NEt 网站,我希望用户通过 SQL 中的自定义存储进行身份验证,然后通过 ADFS2.0 处理向用户发出的声明...
【问题讨论】:
标签: adfs2.0
这并不完全正确。虽然 ADFS v2.0 在其默认形式下仅允许您针对 Active Directory 进行身份验证,但有一种混合方法。可以将认证类型设置为forms(修改\inetpub\adfs\ls目录下ASDFS服务器的Web.config文件)。
一旦设置为表单,您实际上可以自定义 ADFS 登录页面 (FormsSigninPage.aspx) 来执行您想要的任何自定义身份验证。身份验证通过后,ADFS 的其余部分将从您离开的地方重新开始。
这里有一篇文章展示了如何做到这一点: Customizing the ADFS Signin Pages
【讨论】:
(与another answer of mine 重复的信息,因为此处适用相同的答案。)
another answer to this same question 中建议的解决方案有点误导。如果您阅读the actual blog post,您会看到他们添加了额外的 STS。 AD FS 2.0 对该其他 STS 具有“声明提供者信任”,并重定向到它(如果“主域发现”设置正确)。然后,其他 STS 以它喜欢的任何方式执行身份验证,将令牌发送回 AD FS,然后运行其声明规则。
因此,在该解决方案中,它不是 AD FS 2.0 对替代存储进行身份验证,而是重定向到 STS,该 STS 对该存储进行身份验证。
AD FS 2.0 本身不允许针对自定义身份验证存储进行身份验证。 (此时的官方文档请参见this answer of mine。)
【讨论】:
ADFS 2.0 只能对 Active Directory 中的用户进行身份验证。它可以从其他存储(SQL、LDAP、自定义)中检索属性,但不能用于身份验证。
您可能希望将 StarterSTS (http://startersts.codeplex.com/) 作为替代方案。
尤金尼奥
【讨论】: