为什么使用Windows Azure模拟器时Windows身份验证失败
本文关键字:Windows 身份验证 失败 模拟器 Azure 为什么 | 更新日期: 2023-09-27 18:07:21
我创建了一个Cloud Service
项目,其中包含Web Role
中的MVC Application
和Worker Role
。在MVC项目中,我使用Windows Authentication
…某些字段是根据被授权的用户来管理的(没什么大不了的)。
当我"设置为启动项目"到MVC项目时,我的Windows Identity Principal
遇到了很好的…所有东西都显示&工作如预期(这是好的)。
然后,就到了处理&调试Worker Role
。要做到这一点,我必须通过选择"设置为启动项目"来运行Windows Azure Emulator
到Cloud Service
项目本身(然后按F5)。这样做会启动Windows Azure Emulator
中的所有Cloud Service
角色。
然而,当我这样做的IsAuthenticated
属性是假的…我所有的HTML元素都消失了。
问题(S):
—为什么在本地运行Windows Azure Emulator
会阻止Windows Authentication
?
-如果我需要"设置"模拟器…如何?
安全码部分:
这里没什么特别的…
var identity = filterContext.HttpContext.Request.LogonUserIdentity;
if (!identity.IsAuthenticated)
RedirectToAccessDeniedPage(filterContext);
部分WEB配置:
这里没什么特别的…
<authentication mode="Windows" />
<identity impersonate="false" />
当您将MVC项目设置为启动项目时,您实际上是通过IIS在您的机器上本地运行该项目。IIS将自动使用您当前的NT凭据作为当前登录的用户,这是有意义的。
正如Parv Sharma在他的评论中所暗示的那样,当您将云服务设置为启动项目时,将启动一个单独的VM模拟器,模拟在云中会发生的事情。虽然虚拟机也在IIS中运行您的应用程序,但它不知道您是谁,因为您还没有登录。由于本地NT凭据没有存储在该VM中(无论如何,将用户凭据存储在VM中是没有意义的),因此IIS无法识别正在登录的您。
所以你需要实现一种形式的身份验证表单,允许用户对目录存储进行身份验证,这就是Azure目录服务的全部内容。以下是Azure目录服务场景的MSDN文档,其中包含示例实现的链接。