【发布时间】:2012-06-13 10:25:47
【问题描述】:
是否有人成功配置 ADFS2 以使用 Live Id(或 Google、Yahoo 等)作为声明提供程序,如果是,您从哪里获得配置说明(请分享) 我之前曾设法使用 Azure 中的 ACS 来连接到 Live Id 和 ADFS,但想将 ADFS 用作“HUB”
【问题讨论】:
标签: adfs2.0 windows-live-id liveid
是否有人成功配置 ADFS2 以使用 Live Id(或 Google、Yahoo 等)作为声明提供程序,如果是,您从哪里获得配置说明(请分享) 我之前曾设法使用 Azure 中的 ACS 来连接到 Live Id 和 ADFS,但想将 ADFS 用作“HUB”
【问题讨论】:
标签: adfs2.0 windows-live-id liveid
AD FS 2.0 本身不允许针对自定义身份验证存储进行身份验证:它只能对 Active Directory 帐户进行身份验证。 (此时官方文档见this answer of mine。)
an answer to another StackOverflow question 中提出了一个解决方案,尽管措辞有点误导。如果您阅读the actual blog post,您会看到他们添加了额外的 STS。 AD FS 2.0 对该其他 STS 具有“声明提供者信任”,并重定向到它(如果“主域发现”设置正确)。然后,其他 STS 以它喜欢的任何方式执行身份验证(例如,使用 Google 或 Live 帐户),将令牌发送回 AD FS,然后运行其声明规则。
因此,在该解决方案中,它不是 AD FS 2.0 对替代存储进行身份验证,而是重定向到 STS,该 STS 对该存储进行身份验证。
【讨论】:
这可以通过与您的 ADFS 联合的自定义 STS 实现。
这个想法是构建一个 STS,它本身使用 OAuth2 对用户进行身份验证,然后(可选)执行自己的 Active Directory 查询以查找具有相同电子邮件地址的用户并从 AD 读取角色。然后自定义 Sts 将所有声明返回给您的应用程序。
正如 Marnix 指出的那样,在 adfs 页面而不是身份提供者页面上提供凭证的混合方法是可能的。这相当困难,因为它涉及在您的 sts 上设置 wstrustfeb2005 端点。我有一个关于如何做到这一点的六部分教程: http://netpl.blogspot.com/2011/08/adfs-20-quest-for-customizing-adfs-sign.html
尽管如此,后一种方法要困难得多,而暴露与 adfs 联合的被动 sts 应该不会花费您很长时间。
【讨论】: