繁体   English   中英

一个网站可以针对多个ADFS服务器进行身份验证吗?

[英]Can a website authenticate against multiple ADFS servers?

我们有一个使用FormsAuthentication的ASP.NET/MVC网站。 通常,当用户尝试访问页面且没有有效的FormsAuthentication cookie时,IIS会将其重定向到登录视图。 当用户对登录控制器执行HttpPost时,我们的控制器操作将调用我们的WebApi Web服务,该服务将针对Sql Server数据库验证用户名,密码和customerid。 如果认证通过,则控制器操作将设置FormsAuthentication cookie,并重定向到用户要求的页面。

现在,销售“ Single Sign-On”(单点登录)的声音越来越大,尽管我不清楚它们的含义。 据我所读,在Microsoft World中,这通常意味着访问MS的Active Directory联合身份验证服务。

在这一点上,我几乎不知道它是如何工作的,但是在我深入研究之前,可以将身份验证代码放在WebApi Web服务中,在该服务中我们可以选择针对Sql Server数据库还是针对哪个ADFS服务器适合指定客户?

我们的问题是,我们不知道有多少用户在为数百个客户服务。 许多客户不会运行ADFS,而这样做的客户将各自拥有自己的ADFS服务器。

关于单一登录,我看到的大部分内容似乎都涉及到将浏览器重定向到ADFS服务器,然后重定向回,并且如果您已经登录,则看起来根本避免登录。我认为我们没有就我们而言,可以做到这一点。 在点击数据库之前,我们不知道重定向到哪个ADFS服务器。

因此,问题-是否有可能完全从WebAPI Web服务中的C#代码进行ADFS身份验证?

(一种可能的麻烦是-网站本身对任何数据库的访问均为零。其web.config中唯一的配置设置是该Web服务的基本URL。无论身份验证发生在该Web服务中,而不是在该网站中。)

首先,“单点登录”(SSO)不限于ADFS。 这只是意味着您只键入一次凭据,然后您访问的所有系统都会自动“识别”您; 所有后续授权请求都是透明的。 例如,如果您的公司Intranet(相同的AD域)中有多个使用Windows身份验证的网站,则您具有SSO:登录到计算机时进行一次身份验证,然后您的Web浏览器使用NTLM自动对这些网站进行身份验证或Kerberos。 在这种情况下,没有ADFS。

ADFS(通常更称为“联合会”)允许的是SSO跨越安全边界。 在Windows世界中,安全区域通常是由Active Directory林创建的。 使用Windows身份验证提供的SSO可以访问该林中的所有内容。 但是,一旦离开此区域(SaaS应用程序,另一个公司网络中的网站),就需要另一个身份验证协议来执行SSO,并且这些协议是在ADFS中实现的。

然后关于您的特定问题:

  • 您可以做的是使用AdfsAuth而不是使用FormsAuth。 当未知用户访问页面时,他将被重定向到ADFS进行身份验证(使用您正确提到的浏览器重定向)。 要知道哪个ADFS服务器应该对您的用户进行身份验证,您确实需要一种区分它们的方法:每个客户的IP范围列表? 每个客户使用不同的URL? 如果您没有这样的东西,那么唯一的方法就是向他们显示选择的列表,例如:“我为CompanyA工作”,“我为CompanyB工作”,“我为CompanyC工作”,“我不工作”不能在任何一家公司工作,并希望使用FormsAuth进行身份验证。”
  • 在这种情况下,您的WebApi Web服务必须要做的是:如果我知道要使用哪个ADFS服务器,请在那里重定向用户。 否则,将照常使用数据库对用户进行身份验证。
  • 当您将AdfsAuth用于客户时,您的数据库无用。 您可以删除与此客户有关的所有凭证。

完全通过WebAPI中的C#代码进行ADFS身份验证

可以在您的服务中“重新实现” ADFS,但是如果这样做,您将不会获得SSO。 使用联合身份验证时,会将用户重定向到其公司的ADFS服务器。 此ADFS服务器与他的计算机位于同一域中,因此用户在此处获取SSO。 同样,如果您对自己进行身份验证,则用户将无法获得SSO,因为用户与您的站点不在同一安全区域中。

向多个身份提供者进行身份验证时,通常会将其重定向到您自己的 STS。 因此,在这种情况下,您将www.yourapp.com重定向到sts.yourapp.com,后者又重定向到sts.somecustomer.com。

该图显示了RP-STS

启用此类数据流的特定工具是home realm参数( whr和AD FS Powershell API(允许IDP维护)。

RP-STS充当应用程序的信任点,并管理适当IDP的选择。 一个RP-STS,许多IP-STS。 您的每个客户的IP-STS都被设置为AD FS中的“声明提供者信任”。

与往常一样,维托里奥(Vittorio)所涵盖的话题比我能做的要好。

该图显示了两个IP-STS通过单个RP认证到单个RP-STS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM