ASP.NET MVC 中的模拟

2023-11-22

我在内联网上有一个 MVC Web 应用程序,并且希望能够在我们的 FTP 服务器上创建文件以发送给外部合作伙伴。

模拟代码使用 WindowsImpersonationContext。

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

StreamWriter sw = System.IO.File.CreateText("PathOnFTPServer");
sw.Write("data");

impersonationContext.Undo();

这是发生的事情以及我提出问题的原因:

预冒充

User.Identity.Name:[我的 Windows 凭据]

System.Security.Principal.WindowsIdentity.GetCurrent().名称:NT AUTHORITY\NETWORK SERVICE

后冒充

用户身份:[我的 Windows 凭据]

GetCurrent.Name:[我的 Windows 凭据]

模拟撤消

用户身份:[我的 Windows 凭据]

GetCurrent.Name:NT AUTHORITY\NETWORK SERVICE

因此,在我模拟之前,当前用户是系统帐户,但在模拟之后,它使用的是我的 Windows 域帐户,该帐户有权在 FTP 服务器上创建文本文件。该代码使用 Visual Studio Web 服务器在本地运行,但当我将其部署在测试服务器上的 IIS 上时则无法运行。

我收到拒绝访问错误。当正确的用户被冒充时,错误的原因是什么?


模拟允许机器对机器的模拟,因此在模拟时客户端浏览器和服务器位于同一页面上。当您尝试访问网络共享时,计算机不信任模拟的凭据。

您需要在 Active Directory 中为 IIS 计算机启用委派。转到 Active Directory 用户和计算机,找到计算机,单击属性,然后单击“信任计算机进行委派”。 (你可能需要重新启动 IIS 才能使其工作,我不记得了)。

还有比这更多的理论我不完全理解,但这应该有效。正确与否还有人可以评论!

此外,它在您的开发计算机上运行的原因是开发服务器作为开发人员运行,而不是(本地)\网络服务。


一个不错的链接:

http://msdn.microsoft.com/en-us/library/cc949004.aspx

模拟和委托有什么区别?

模拟将原始调用者的身份传递到同一台计算机上的后端资源。委派将原始调用者的身份传递到运行服务的计算机以外的计算机上的后端资源。

例如,如果某个服务在没有模拟的情况下在 IIS 中运行,则该服务将使用 IIS 5.0 中的 ASP.NET 帐户或 IIS 6.0 中的网络服务帐户访问资源。通过模拟,如果客户端使用原始调用者的帐户进行连接,则服务将使用原始调用者的帐户而不是系统 ASP.NET 帐户来访问同一计算机上的资源,例如 SQL Server 数据库。委派类似,只是 SQL Server 数据库可能位于服务远程的另一台计算机上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC 中的模拟 的相关文章

随机推荐

  • 在 R Markdown 中插入图片/表格 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 所以我想在 R Markdown 中插入一个表格和一张图片 在常规 Word 文档中 我可以轻松插入表格 5 行 x 2 列 而对于图片 只需复制和粘贴即可 如何插入 5 行 2
  • 为什么不能从元组中分配一对,但可以从对中分配元组?

    我不清楚为什么分配是合法的tuple
  • IllegalArgumentException:颜色参数超出预期范围:红绿蓝

    当我使用 JUnit 测试我的代码时 出现以下错误 java lang IllegalArgumentException Color parameter outside of expected range Red Green Blue 老实
  • 如何在 Android 中使用 Camera2 API 以编程方式在录制视频时拍摄照片

    我想在使用camera2 API录制视频时捕获图像 有两个单独的演示可用 1 捕捉图像和 2 录制视频 我尝试将它们合并到一个应用程序中 但却对很多事情感到困惑 喜欢 CameraDevice 是 single 表示连接到 Android
  • 当存在外部链接时,填充上的 SVG css3 过渡不起作用

    我有一个与此类似的问题 here 唯一的区别是我想要将 SVG 链接到的页面是外部页面 含义是 http www google ca 目前在我的代码中 更改到内部页面的链接可以使 css3 转换工作 但将其链接到外部 http 会覆盖我所做
  • ruby中如何组合多个相同大小的数组

    如果我想将 3 个或更多数组合并为一个 我该如何在 ruby 中做到这一点 它会是 zip 的变体吗 例如 我有 a 1 2 3 b 4 5 6 c 7 8 9 我想要一个看起来像这样的数组 1 4 7 2 5 8 3 6 9 a b c
  • MongoDB 将文档预加载到 RAM 中以获得更好的性能

    我希望 MongoDB 将查询结果保存在 RAM 中更长时间 如果内存可用 则为 30 分钟 是否可以 或者有什么方法可以确保在后续查询之前将数据预先加载到 RAM 中 事实上 我想知道 MongoDB 的简单查询结果性能 我有一个 10G
  • 使用乘数 ggplot2 转换轴标签

    之前在 ggplot2 中 我使用格式化函数将 Y 轴上的值乘以 100 formatter100 lt function x x 100 使用新的 ggplot2 v0 9 1 我在使用新的转换函数转换轴标签时遇到问题 mult tran
  • 如何使用 SQLAlchemy 检查 PostgreSQL 架构是否存在?

    我正在使用 SQLAlchemy 在 PostgreSQL 数据库中生成特定模式的表 如果架构不存在 我想创建它 我知道 PostgreSQL 查询来检查模式是否存在 SELECT exists select schema name FRO
  • 为什么在 Javascript 模块模式中使用自执行匿名函数?

    在 JavaScript 的模块模式中 立即调用函数表达式 也称为自执行匿名函数 用作返回对象的自执行函数 自执行函数如何隐藏私有变量并仅公开返回的对象 为什么普通的 JavaScript 函数不会发生这种情况 那么在下面的迷你模块中 为什
  • Kotlin 中是否可以重写静态方法?

    你好想象一下我们有以下课程 Manager public static void doSth some logic 如何在 kotlin 中重写该方法 我已经厌倦使用 fun Manager doSth 但它应用于实例而不是静态类型 这样做
  • 有什么方法可以仅通过类型哈希值来查找 HashSet 吗?

    我有一个结构体 除其他数据外 还有一个独特的id struct Foo id u32 other data u32 我想使用id作为键并将其保留在结构内部 use std collections HashSet use std hash H
  • 访问iOS6 UIPageViewController创建的UIPageControl?

    我正在使用一个UIPageViewController导航设置为水平 过渡样式设置为滚动 在 InterfaceBuilder 中 并且没有脊柱 这给了我一个可爱的 UIPageControl 集成 现在我希望能够切换它是否显示 因为它下面
  • 在一组固定元素上生成特定秩的“随机”矩阵

    我想生成大小的矩阵mxn和排名r 元素来自指定的有限集 例如 0 1 or 1 2 3 4 5 我希望它们在某种非常宽松的意义上是 随机 的 即我想从算法中获得各种可能的输出 其分布与具有指定等级的元素集上的所有矩阵的分布大致相似 事实上
  • 未知软件异常0xe0434352

    While I am trying to launch my application I am getting the following error 检查了应用程序日志 但没有错误消息 这是由于任何框架版本或任何其他依赖关系吗 这是 CL
  • TPL DataFlow 与 BlockingCollection

    我明白 一个BlockingCollection最适合消费者 生产者模式 但是 我什么时候使用ActionBlock来自TPL数据流图书馆 我最初的理解是对于IO操作 保留BlockingCollection而 CPU 密集型操作最适合Ac
  • 删除前 16 个字节?

    我将如何从字节数组中删除多个字节 编辑 正如 nobugz 的评论 和 Reed Copsey 的答案 提到的 如果您实际上不需要结果作为字节数组 您应该考虑使用ArraySegment
  • 具有正确重力和单行的提示和文本视图

    我打开了一个错误 但我想知道是否有人遇到此问题并知道解决方法 如果您定义一个带有提示的文本视图 请给它正确的重力 android gravity right 然后如果您定义android singleLine true或android ma
  • 在 PyQtGraph 中返回鼠标光标坐标

    我是 PyQtGraph 的新手 想用它来快速可视化我的数据采集 以前我使用 matplotlib 其中重绘图形是我的瓶颈 转换到 PyQtGraph 后 我目前只缺少 matplotlib 的一项功能 即 返回鼠标光标的 x 坐标和 y
  • ASP.NET MVC 中的模拟

    我在内联网上有一个 MVC Web 应用程序 并且希望能够在我们的 FTP 服务器上创建文件以发送给外部合作伙伴 模拟代码使用 WindowsImpersonationContext System Security Principal Wi