场景:
- 我们当前的堆栈是 SharePoint 2013 Web 应用程序
- 用户使用 ADFS 基于声明的联合身份验证登录 SP2013:当用户在 SP 站点中单击“登录”时,他们会通过 ADFS 重定向到对用户进行身份验证的身份提供商,并使用内置支持联合身份验证的 SP通过身份验证,我们获得存储在 SharePoint 安全 token 服务中的 SAML token 。用户的浏览器会获取一个
FedAuth
cookie(如果我理解正确的话),该 cookie 引用存储在 SharePoint 中的 token 。 - 我们希望逐步从 SP 迁移到基于 ASP.NET MVC 的堆栈
- 这里的关键是逐步迁移:我们希望将页面和 REST 服务从 SP 逐步迁移到新系统。
例如,URL /thisurl/
应由旧 SP 应用程序处理,而 /migeratedurl/
应由新 ASP.NET MVC 应用程序处理。
我有以下疑问/问题:
- 问题 1:我们如何在新设置中处理身份验证?我想身份验证(即处理用户单击“登录”链接、重定向到 ADFS -> 身份提供商)仍将由旧 SP 站点处理。在这种情况下,新的 ASP.NET MVC 应用程序如何访问经过身份验证的用户的声明?
- 问题 2:部署此功能的最佳方式是什么?新的 ASP.NET MVC 应用程序应该是 SharePoint 网站下的 IIS Web 应用程序吗?或者应该是一个新的 IIS 网站?请记住,ASP.NET MVC 应用程序需要对 SP 站点进行 AJAX 调用,反之亦然。
我对 SharePoint、联合身份、ADFS 等的理解充其量是有限的,因此我对我们系统的描述可能缺乏,可能有一些我误解的东西,可能有我不正确的术语等。如果我可以对问题进行更改以使其更清晰,请告诉我。
最佳答案
在 ADFS 术语中,您拥有的是两个独立的依赖方 (RP),即。 SP 站点和新的 MVC 应用程序。
ADFS 在它们之间应用 SSO。
您的新应用程序。将基于声明,即您需要通过 WIF(旧版)或 OWIN(新版和 Shiny 版)添加 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)
关于asp.net-mvc - 从 ASP.NET MVC 到 SharePoint 的联合身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36623766/