使用Windows Azure模拟器时,为什么Windows身份验证失败?

时间:2014-06-06 21:07:07

标签: c# azure windows-authentication azure-cloud-services

我在Cloud ServiceMVC Application中创建了一个包含Web Role的{​​{1}}项目。在MVC项目中,我正在使用Worker Role ...并且某些字段是根据被授权的用户管理的(没有大问题)。

当我将“设置为启动项目”发送到MVC项目时,我的Windows Authentication看起来很好......所有内容都显示在&按预期工作(这很好)。

然后,是时候开始工作了。调试Windows Identity Principal。为此,我必须通过选择“设置为启动项目”来运行Worker RoleWindows Azure Emulator项目本身(然后按F5)。这样做可以激活Cloud Service中的所有Cloud Service个角色。

但是,当我这样做时,Windows Azure Emulator属性为false ...并且我的所有HTML元素都会消失。

问题(S):
  - 为什么运行IsAuthenticated本地阻止Windows Azure Emulator
  - 如果我需要“设置”模拟器......怎么样?


严格的部分代码:
这里没什么特别的......

Windows Authentication

网页配置的部分:
这里没什么特别的......

var identity = filterContext.HttpContext.Request.LogonUserIdentity;
if (!identity.IsAuthenticated)
   RedirectToAccessDeniedPage(filterContext);

1 个答案:

答案 0 :(得分:1)

当您将MVC项目设置为启动项目时,您实际上是通过IIS在您的计算机上本地运行项目。 IIS将自动使用您当前的NT凭据作为当前登录的用户,这是有道理的。

正如Parv Sharma在评论中所暗示的,当您将云服务设置为启动项目时,会启动一个单独的VM emualtor,模拟云中会发生的情况。虽然VM也在IIS中运行您的应用程序,但由于您尚未登录,因此不知道您是谁。并且因为您的本地NT凭据未存储在该VM中(无论如何将用户凭据存储在VM中都没有意义),IIS无法识别您是否已登录。

因此,您需要实现一种身份验证表单,允许用户针对目录存储进行身份验证,这就是Azure目录服务的全部内容。以下是Azure Directory Services场景的MSDN文档,其中包含示例实现的链接。