在一个ASP.NET网站中混合表单身份验证和Office 365身份验证

时间:2014-07-04 23:32:50

标签: asp.net authentication forms-authentication integration office365

我们有一大堆用ASP.NET编写的商业互联网应用程序,它使用表单身份验证。该应用程序被内部人员以及数千名外部客户和供应商大量使用。

最近,我们在整个组织中推出了Office 365。

目前,Office 365世界和商业界都没有谈论,我们的目标是将它们更紧密地结合在一起。

我们至少要对Office 365进行身份验证,而不是为内部用户进行表单身份验证。通过这种方式,我们可以有效地登录到两个系统,两个系统之间的超链接都可以工作,而无需用户再次登录。

现在可以轻松验证Visual Studio 2013,因为它现在是创建新项目的一部分,我们有一个很好的概念应用程序运行证明。

我们面临的问题是所有外部用户。我们希望他们继续使用表单身份验证机制。

问题在于两种机制似乎彼此排斥。

在他们不想一起玩的最简单明显的例子中,表单身份验证需要将web.config设置为

<authentication mode="Forms"/>

但Office 365身份验证要求将其设置为

<authentication mode="None">

我们如何解决这个问题?是否只是我们尚未找到的一些web.config设置魔法问题?或者我们是否需要对我们的架构进行更严格的重新设计?

我们尝试了以下

将Office 365登录页面放在与表单身份验证登录页面不同的目录中,并在每个目录中具有单独的web.config,或者使用根web.config中的“Locations”属性。这不起作用,因为任何一种身份验证技术总是跳到另一种身份验证技术之前,或者子目录中不允许进行各种设置。

我们考虑过以下事项:

拥有两个Web应用程序;一个用于内部人员,一个用于其他人。内部人员将登录到其他域。我们真的不想这样做,因为它会导致“超链接地狱”,它会使部署更加困难,并且会对我们的ORM中的数据库级缓存造成严重破坏。

我们可以将所有用户移动到活动目录,并且每个人都对其进行身份验证。在这种情况下,我会有点担心用户的登录体验,因为它与他们当前的体验大不相同,Azure Active目录的成本将变得非常简单。

有人有什么好主意吗?

提前致谢。

0 个答案:

没有答案