我有一个 .net 应用程序,它连接到我的本地 ADFS 服务器(连接到我们的公司 AD 服务器),一切运行正常。我的问题是,我的 ADFS 能否与互联网上的其他 SSO 服务(如 Azure AD、AWS、Google 登录、Facebook、Twitter、OpenID 等)建立可信连接,以便我的应用程序可以使用来自除我的 Activate Directory 之外的多个可信来源的声明?
答案1
我已经这样做了。在我们的模型中,我们有三组用户:
内部用户通过 Active Directory(Kerberos 或 NTLM)对本地 AD FS 实例进行身份验证。在此集合中,AD FS 服务器作为 IdP 运行。
外部用户通过 Active Directory(Kerberos 或 NTLM)针对自己的 AD FS 实例和域进行身份验证。在此集合中,AD FS 服务器已将声明提供方信任配置到颁发 AD FS 服务器。我们的 AD FS 服务器通过转换和验证在其他地方颁发的声明并向我们的应用程序重新颁发受信任的令牌来充当 SP-STS。IdP 是其他域的 AD FS 服务器,其中我们的 AD FS 服务器配置为依赖方。
没有公司登录的外部用户。这些用户向小型 .Net STS 进行身份验证,该 STS 在我们的 AD FS 服务器上配置为声明提供方信任。(我们也考虑过 - 从技术上讲这很简单 - 使用 Azure Active Directory B2C 来担任此角色,但其他问题阻碍了它。)
为了让我们的客户透明,我们使用 IP 范围来检测(通过 nginx)并重定向到适当的企业 AD FS – 否则依赖于标准 AD FS HRD 页面。
答案2
看来链接依赖方确实是可行的。这个人写了一系列关于它的帖子,这是其中一篇。您可以使用 ADFS 作为应用程序进行身份验证的“中心”,它会将请求链接回用户身份实际所在的服务。
https://cloudidentityblog.com/2013/06/17/why-use-aad-as-idp-via-ad-fs-rp/
我自己没有做过这个,所以我不知道这需要做多少工作,也不知道会有什么陷阱。我确信如果用户居住在多个 IdP 中,您可能会遇到问题。
不要忘记,没有什么可以阻止您编写 .NET 应用程序以便能够本机利用多个 SSO 提供程序。
答案3
是的,它可以。
每个外部 IDP 都被添加为 ADFS 中的声明提供者,而在 IDP 端,ADFS 被添加为依赖方。
当您进行身份验证时,ADFS 将显示列出所有 IDP 的主领域发现屏幕。
然后选择要使用哪一个。