在Windows Azure上托管的asp.net mvc 3中的Windows身份验证?

时间:2011-08-01 18:16:54

标签: windows azure windows-authentication azure-sql-database

我正在将一个ASP.NET MVC 3内部网网站迁移到Windows Azure,将数据库迁移到SQL Azure。

On Premises我的网站使用Windows身份验证对用户进行身份验证和授权(通过在控制器上放置AUTHORIZE属性)。

如果你能让我知道如何去做同样的话,那将是非常友好的。谢谢你提前!

2 个答案:

答案 0 :(得分:6)

你有两个选择:

  1. 使用联合身份验证和ACSv2之类的东西。这需要一些工作来设置依赖方,安装ADFS2等。但是,它是最强大和面向未来的选项。这是一个非常好的选择。
  2. 使用类似Windows Azure Connect的内容。这将通过将正在运行的实例加入本地域控制器,将Windows身份验证带到云端。实际上,您的云实例与本地域控制器之间存在VPN。今天这个模型有一些注意事项(例如需要在DC上安装代理),但它是从“正常工作”的角度来看,这是最简单的。从长远来看,我认为这比选项#1更具吸引力。
  3. 您可以查看Windows Azure Platform Training Kit

    ,了解每项详情

    我还应该补充一点,你没有选择(至少今天)使用Windows身份验证和SQL Azure。你必须在那里使用SQL身份验证,所以我在这里所说的只适用于网站本身。

答案 1 :(得分:4)

我非常成功地使用Windows Identity Foundation和Azure AppFabric访问控制服务来使用ADFS v2进行身份验证。

除了直接身份验证之外,它还提供了许多其他声明的灵活性,例如角色(不需要仅基于AD组成员身份)。

在我看来,它最大的优势在于Azure平台和内部部署AD之间不需要通信通道。一切都通过浏览器完成。从安全角度来看,这意味着虽然任何人都可以访问您的应用程序,但除非他们也可以访问您的ADFS服务器,否则没有人可以对其进行身份验证对此的访问仅限于内部部署客户端或通过VPN,大大减少了攻击面。

此外,由于ADFS不需要在外部公开,因此根据我的经验,它可以大大减轻部署它的官僚开销。

只需要配置,虽然它最初可能有点小提琴,但是一旦掌握了它就非常简单。您将WIF配置为使用ACS作为其身份提供程序,并在ACS中为该应用程序创建依赖方。然后,将ACS配置为使用ADFS作为其身份提供程序。您可以将WIF配置为直接与ADFS通信,但通过ACS进行的额外抽象级别可能很有用。

完成配置后,使用[授权]属性“才能正常工作”。

请注意,如果您在控制器中使用Ajax调用,则需要采取一些预防措施,因为Ajax调用不处理联合身份验证重定向(或者我喜欢称之为ADFS Shuffle),但这没什么不可克服的。

总而言之,WIF + ACS + ADFS与透明Windows集成身份验证相结合,给我留下了深刻的印象。