是否可以通过在 ASP.NET 中模拟 Windows 身份验证用户来从 Active Directory 检索数据?

2024-04-19

我一整天都在试图解决这个问题,并且我在标准谷歌留言板答案中读到了一些相互矛盾的信息。

我想做的是从活动目录中检索域用户(即当前登录用户)的电子邮件地址。我的 ASP.NET 4 网站设置为 Windows 身份验证,在 Active Directory 调用之前一切正常。

当我执行以下操作时,我在 search.findAll() 行上收到 COMException。异常消息是“发生操作错误”(非常有用的消息是吗?) (为了可读性而精简代码)

WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext wic = null;

wic = winId.Impersonate();
using (DirectoryEntry root = new DirectoryEntry(rootQuery))
{
      String userQuery = GetUserQuery();
      DirectorySearcher searcher = new DirectorySearcher(root);
      searcher.SearchScope = SearchScope.Subtree;
      searcher.Filter = userQuery;

      SearchResultCollection results = searcher.FindAll();
      return (results[0].Properties["proxyaddresses"][0]).ToString();
}

所以基本上我想模拟登录用户来拨打电话。 请注意,如果我将凭据直接传递给 DirectoryEntry 构造函数,则此代码将按预期工作。此外,如果我删除模拟代码并在 Web 配置中设置应用程序范围模拟,我也会收到相同的错误。

所以我想我的问题是,在我浪费更多时间之前,这可能吗?或者你have指定访问AD的用户名和密码?

顺便说一句,我在我的开发盒上运行的是 IIS5,但可能会部署到 IIS6。

edit:

按照要求:

rootQuery = @"LDAP://{0}.com/DC={0}, DC=com";
userQuery = @"(&(samAccountName={0})(objectCategory=person)(objectClass=user))";

指定了正确的域和用户。


您正在尝试模拟用户来访问外部资源(外部意味着不在同一服务器上)。您可以执行此操作,但需要在活动目录中设置委派,以便 IIS 服务器(或现在的 WindowsXP 机器)可信任委派。如果这是您想要的方向,请查看其中一些资源以开始使用。

  • http://support.microsoft.com/kb/810572 http://support.microsoft.com/kb/810572
  • http://msdn.microsoft.com/en-us/library/ff647404.aspx#paght000023_delegation http://msdn.microsoft.com/en-us/library/ff647404.aspx#paght000023_delegation

或者,为了避免正确设置和配置委派的麻烦,我只需在 Active Directory 中创建一个服务帐户并使用它即可。您可以在代码中使用凭据,就像您之前所说的那样,或者使用 web.config 中的 Impersonation 元素来模拟此服务帐户:<identity impersonate="true" userName="DOMAIN\ServiceAccount" password="password"/>.

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

是否可以通过在 ASP.NET 中模拟 Windows 身份验证用户来从 Active Directory 检索数据? 的相关文章

  • 使用 ELMAH 记录 WCF 服务的异常

    我们正在使用优秀的ELMAH http code google com p elmah处理 ASP NET 3 5 Web 应用程序中未处理的异常 这对于除使用 REST 功能使用的 WCF 服务之外的所有站点都非常有效 当操作方法中发生应
  • 直接将 .aspx 转换为 .pdf [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在新窗口中打开图像或pdf文件?

    我有一个 gridview 它包含文件名和文件路径 图像和 pdf 格式文件 其中我使用了模板字段 在该字段下放置了 1 个图像按钮 单击该图像按钮 即 查看 按钮 时 我想在新窗口中打开所选文件 这是我的代码 protected void
  • 将日期时间显示为 MM/dd/yyyy HH:mm 格式 C#

    在数据库中 日期时间以 MM dd yyyy HH mm ss 格式存储 但是 我想以 MM dd yyyy HH mm 格式显示日期时间 我通过使用 String Format 进行了尝试 txtCampaignStartDate Tex
  • 使用 IdentityDbContext 和 Code First 自动迁移表位置和架构的实体框架?

    我正在尝试使用 IdentityDbContext 类设置自动迁移更新 并将更改传播到整个数据库的实际 DbContext 在进入代码之前 在使用自动迁移实现 IdentityDbContext 时 我收到此错误 影响迁移历史系统表位置的自
  • vb.net HtmlAgilityPack 在 div 之后插入字符串

    我试图在 div 末尾直接插入一些我自己的 html 这个 div 里面有其他 div Dim HtmlNode As HtmlNode HtmlNode CreateNode span class Those were the frien
  • 安装 Framework 4.5 时以 .NET Framework 4 为目标

    我的计算机上安装了 VS2010 和 VS2012 并安装了 NET Framework 4 0 然后将其升级到 NET Framework 4 5 但是 我仍在开发需要在 NET Framework 4 0 上运行的应用程序 该项目表示
  • 如何 XML 序列化 DateTimeOffset 属性?

    The DateTimeOffset当数据表示为 Xml 时 我在此类中拥有的属性不会呈现 我需要做什么来告诉 Xml 序列化将其正确呈现为DateTime or DateTimeOffset XmlRoot playersConnecte
  • 检查字符串是否是有效的 AD 组

    使用以下代码 我可以轻松查看提供的用户是否存在于提供的组中 public static bool IsInGroup string user string group using var identity new WindowsIdenti
  • Lightspeed 与 NHibernate

    有什么体验光速 http www mindscape co nz products LightSpeed comparison aspx Mindscape 提供的比较并没有过多说明 NHibernate Lightspeed 看起来很灵活
  • 当checked属性为false时,单选按钮默认被选中?

    我正在尝试生成单选按钮 有条件地检查检查的属性 如果该值存在于数据库中 则应选择它 否则检查的属性为 false 所以最初数据库中没有行 所有单选按钮的检查属性也为 false 但仍然在 UI 上选择 请参见下图 所以不知道这是默认行为还是
  • 获取所有查询字符串对并初始化字典的最佳方法

    我想将所有键 值对存储在我的查询字符串中 www example com a 2 b 3 c 34 进入字典 有没有一种快速的方法可以做到这一点 而无需手动循环所有项目 Try HttpUtility ParseQueryString 它给
  • C# 数据表来保存表格(无限嵌套)

    我相对较新C 但来自C C 背景 我需要一个类似于的数据类型 类 DataTable 但允许存储的列保存 简单 类型 int float boolean string 以及相同类型的数据 以便一个列可以保存另一个表 该表也具有存储表等的列
  • Wix - 自定义安装目录

    我使用的是 Wix 3 x 用户应该能够选择目标目录 我的Setup wxs目前是这样的 http pastebin com uH1EjbDQ http pastebin com uH1EjbDQ 询问用户自定义目标目录的最简单方法是什么
  • Python tkinter.filedialog Askfolder 干扰 clr

    我主要在 Spyder 中工作 构建需要弹出文件夹或文件浏览窗口的脚本 下面的代码在spyder中完美运行 在 Pycharm 中 askopenfilename工作良好 同时askdirectory什么都不做 卡住了 但是 如果在调试模式
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • 将 HTML 表格导出到 Excel

    我在 ASP NET MVC 视图页面上有 HTML 表 现在我必须将该表导出到 Excel 1 我使用部分视图 Inquiries ascx 来显示数据库中的表数据 使用LINQ to Entity 2 我还使用了 UITableFilt
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式

随机推荐

  • 在回收器视图网格布局管理器中创建总线布局时出现间距问题

    我正在使用回收者视图GirdLayout创建总线布局的管理器 我的问题是间距 我根据行列填充数据 这就是我获取布局的方式 这就是我想要的布局 我想要第 3 行第 2 列的物品 位于第 2 行第 0 列的卧铺座位旁边 如上图所示 我怎样才能删
  • 代币发行(AADSTS50013:断言包含无效签名)

    当我尝试使用 Cortana Bot 用户令牌 这是一个图形令牌 为另一个使用 Web API 应用程序生成 代表 令牌时 出现错误 如下所述 ClientAssertionCertificate ClientCredential通过传递其
  • django-taggit:使管理中不需要标签

    我已经开始使用 django taggit 它似乎符合要求 但对我来说 管理网站仍然存在问题 我包括了tagsModelAdmin 中的属性如下所示 class MyModel db models Model name models Cha
  • 如何在 iPhone 应用程序中自动录制视频而无需用户交互

    我正在开发需要自动录制视频的 iPhone 应用程序 我使用了移动核心服务框架并使用它 我使其进入视频模式并单击录制选项 开始捕获视频 但我想要它自动 也就是说 我应该能够录制视频而无需单击录制选项 当视频模式出现时 它会自动开始录制视频
  • 在vim中禁用omnicomplete或ftplugin或其他东西

    我正在尝试禁用 sql 中的 自动 全向 任意 完成 这对我来说是个问题 因为我用过
  • PHP - preg_replace YouTube 嵌入,无论顺序如何

    我试图从 YouTube 嵌入代码中捕获 3 个元素 但有时这些元素的顺序不同 或者有时嵌入代码包含更多参数 我想找到一种方法来提取视频 ID 宽度和长度 以便为 AMP 创建 YouTube 集成 嵌入示例 应改写为
  • Android webview 不加载页面,但应用程序从浏览器加载

    我有一个 html 5 移动网络应用程序 可以从浏览器加载 但卡在 android webview 上 我们在加载网络应用程序之前使用了启动屏幕 但我的网络视图卡在启动屏幕中 不加载主页 我们正在使用武尔夫 API http wurfl s
  • java中带有日语字符的电子邮件

    我正在使用java发送电子邮件 发送的消息可以使用不同的语言 但是当我用日语发送消息时 收到的邮件只有 人物 代码是这样的 String content u30d5 u30a1 u30a4 u30eb u540d SMTPMessage m
  • 在 jQuery Mobile 上禁用 data-role="header" 上的页面转换 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 是否可以禁用 data role h
  • 终止连接到 erlang 端口的进程

    我想写一个某种主管 我正在尝试实现关闭外部程序的功能 外部进程通过端口连接到 erlang 的代码 我不知道如何通过发送信号或其他任何方式来关闭该程序 关闭端口不是解决方案 因为我已经检查过许多程序不会在 SIGPIPE 上退出 您有任何想
  • 使用 elasticsearch-dsl-py 对另一个字段中包含的字段创建术语查询

    我在用elasticsearch dsl py https github com elasticsearch elasticsearch dsl py并希望过滤包含在另一个术语中的术语 如下所示 slug foo foo slug bar
  • 如何更改Accounts-UI模板?

    根据望远镜 http demo telesc pe 例子 源代码 https github com SachaG Telescope 可以显示自定义的 account ui 表单 参见他的用户登录 html https github com
  • 是否可以为 VS Code 编写二进制文件导入扩展?

    我想在 vs code 中显示二进制文件的一些信息 是否可以为 VS Code 编写一个扩展名 以便在资源管理器中选择该文件 或直接打开它 时 您会看到该扩展名从二进制文件中提取的一些文本 因此 该扩展的核心功能将是 简化的 二进制到文本转
  • R dplyr left_join 错误

    所以我一直在尝试使用 left join 将新数据集的列获取到我的主数据集 称为员工 我已经仔细检查了矢量名称和我没有进行的清理 但似乎没有任何效果 这是我的代码 将不胜感激任何帮助 job codes lt read csv Quest
  • 如何将 Cognito 用户池与 Facebook 等外部提供商结合起来?

    到目前为止 Cognito 拥有支持 Facebook 等外部提供商的身份池 现在有 Cognito 用户池 我很想使用它 但我不知道如何同时支持 Cognito 用户池和 Facebook 等外部提供商 看来身份池和用户池是分开的东西 我
  • Android.mk 包含其他项目

    说明 我的问题的目标是了解如何创建一个可以构建和运行的 Android mk makefile 如下所示的项目结构 Library is library on eclipse 数据 项目库 Project Interface 包含 1 个静
  • Html.Action 不会呈现用 [HttpPost] 注释的操作方法

    我的控制器上有以下方法 HttpPost public ActionResult UnplannedCourses int studentId var model CreateUnplannedCourseModel studentId r
  • 如何从 jQuery UI 日期选择器获取日期

    每当用户在 jQuery UI datepicker 中选择日期并单击表单上的按钮时 我想从 datepicker 获取日期 好吧 我需要获取他们选择的日期的年月日 如何从 jQuery UI 获取日期 Use var jsDate you
  • 控制台错误“非法的base64字符20”[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我使用以下代码进行加密和解密 而解密时我在运行时收到错误 错误消息是 非法的 base64 字符 20 加密代码 String sec
  • 是否可以通过在 ASP.NET 中模拟 Windows 身份验证用户来从 Active Directory 检索数据?

    我一整天都在试图解决这个问题 并且我在标准谷歌留言板答案中读到了一些相互矛盾的信息 我想做的是从活动目录中检索域用户 即当前登录用户 的电子邮件地址 我的 ASP NET 4 网站设置为 Windows 身份验证 在 Active Dire