从 ASP.NET MVC 到 SharePoint 的联合身份验证

Federated authentication from ASP.NET MVC to SharePoint

场景:

例如,URL /thisurl/ 应由旧版 SP 应用程序处理,/migratedurl/ 应由新的 ASP.NET MVC 应用程序处理。

我有以下 questions/issues:

我对 SharePoint、联合身份、ADFS 等的理解充其量是有限的,因此我对我们系统的描述可能有所欠缺,可能有些地方我理解有误,可能有些术语我不理解等。如果我可以对问题进行更改以使其更清楚,请告诉我。

用 ADFS 术语来说,您拥有的是两个独立的依赖方 (RP),即。 SP 站点和新的 MVC 应用程序。

ADFS 在它们之间应用 SSO。

您的新应用。将基于声明,即您需要通过 WIF(旧的)或 OWIN(新的和闪亮的)添加 WS-Fed 功能。

参考:Use the OWIN Security Components in ASP.NET to Implement Web Sign On with ADFS 一个好的 OWIN/ADFS 示例。

所以发生的是用户登录到 SP。他们现在同时拥有 SP 和 ADFS cookie 集。他们现在登录到 MVC 应用程序。他们没有应用程序。 cookie,以便将它们重定向到 ADFS。 ADFS / OWIN 看到他们有 ADFS cookie,所以创建了应用程序。 cookie 和用户无缝登录。

最干净的部署方法是制作应用程序。一个新的 IIS 网站。

这有两个好处:

  • 不依赖于 SP
  • 将来很容易迁移到 Azure(只需要一些 web.config 更改)

如果我在评论中的问题的答案是 'yes' 那么您的 MVC 堆栈应该能够访问 FedAuth cookie 并查询联合站点以获取新令牌。

这意味着 MVC 堆栈将在 IIS 的相同级别上托管在 SharePoint 下面。我认为这就是您 Q2 的答案:)

请参阅Sample Federation, delegation and authentication scenarios in SharePoint 2013

特别是联合方案;

  1. Fabrikam 信任域中的客户端向 Contoso 信任域中的信赖方应用程序发送请求。

  2. 依赖方将客户端重定向到 Contoso 信任域中的 STS。此 STS 不了解客户端。

  3. Contoso STS 将客户端重定向到 Fabrikam 信任域中的 STS,Contoso 信任域与该 STS 具有信任关系。

  4. Fabrikam STS 验证客户端的身份并向 Contoso STS 颁发安全令牌。

  5. Contoso STS 使用 Fabrikam 令牌创建自己的令牌,并将其发送给依赖方。

  6. 依赖方从安全令牌中提取客户的声明并做出身份验证决定。