我有以下场景:
三种不同的Sharepoint服务器:sp1.company.com; sp2.company.com ... 使用Windows身份验证的内部用户和使用基于表单的身份验证(FBA)的外部用户。
当外部用户从一台服务器更改为另一台服务器时,他们必须再次登录。我的目标是为所有SharePoint Server进行单点登录(SSO)。
我想也许我可以通过为内部用户使用ADFS和为外部用户使用customSts(ThinkTecture IdentityServer)来实现这一点。
这可能吗?如何设置Sts服务器ADFS和IdentityServer?我是否必须通过WS-Federation将ADFS连接到IdentityServer?
答案 0 :(得分:2)
是的,您提出的架构很好。您将不得不停止在SharePoint上使用表单auth和windows auth,并开始使用基于声明(SAML和WS-Fed)作为单一登录机制。架构模式是:您的应用程序信任“联合中心”(可以是ADFS或Windows Azure Active Directory)。该服务器将与您的身份提供者和应用程序建立所有信任关系。在您的情况下,您现在拥有的是两个SharePoint应用程序和两个身份提供程序(一个AD通过ADFS,另一个通过Identity Server之类的自定义数据库)。
所有内容都通过标准协议和令牌格式连接。从SharePoint到“联合中心”,您将使用WS-Federation和SAML 1.1令牌。从“联合中心”到ADFS,您将使用WS-Federation和SAML 1.1或2.0令牌。从“联合中心”到Identity Server,它与ADFS相同。在将来,如果你想插入像Facebook这样的东西,“联合中心”需要说OAuth,但是SharePoint仍然会使用WS-Federation,所以你不必触摸那个部分。
作为联合中心的ADFS将为您提供对WS-Federation和SAML协议(但不是OAuth)的支持。今天对你来说这可能已经足够了。您可能需要考虑Windows Azure Active Directory(以前称为Windows Azure访问控制服务),它是作为Microsoft提供的服务提供的“联合中心”(每100K登录的价格为2美元)。微软目前更关注除ADFS以外的WAAD。 WAAD将为您提供对OAuth,移动方案,Office 365等的支持。不是说ADFS正在退役或类似的东西,只是我对投资所在的观点。
把事情放在一起需要一些学习和时间,所以要准备好打一些墙,如证书问题,错过配置,家庭领域发现,索赔转换,SharePoint人员选择器,cookie,注销等。
以下是一些提示:
的Matias
答案 1 :(得分:0)
感谢您的回复,这对我帮助很大。
我设法构建了一个使用ADFS和CustomSTS进行身份验证的简单ASP应用程序。我可以在ADFS中选择主域,并可以在IdentityServer中登录,但是没有重定向回我的应用程序。此外,我没有通过SharePoint来管理它。使用PowerShell脚本应该很容易,但它还没有成功。
关于人员选取器:我知道我必须覆盖SharePoint中的ClaimsProvider。我是否必须查询AD和我的自定义成员资格提供程序?
我查看了你的产品。也许这对我们来说也很有用。我会进一步测试。
的问候, 帕特里克