使用 ASP.NET 获取 Active Directory 信息,无需用户名和密码

2024-04-18

我正在尝试从 ASP.NET Web 应用程序获取本地网络上用户的 Active Directory 信息。 Web 应用程序运行在IIS在本地网络上。

我想要的:当用户登录网站时,他们可以从 Active Directory 中看到自己的名字、姓氏、用户名、电子邮件和图片。问题是,当他们进入网站时,网络应用程序会要求输入用户名和密码。用户在打开电脑时已经输入了用户名和密码。所以他们不需要再做一次。

用户使用用户名和密码登录电脑。 我可以通过以下方式获取域名和用户名:

string adInfo = Request.ServerVariables["LOGON_USER"];

此外,我还可以在测试时在调试时获取本地 PC 上的 Active Directory 信息System.DirectoryServices,但是当其他用户在本地尝试此 Web 应用程序时,会出现用户名和密码对话框。

我怎样才能让用户无需输入用户名和密码就可以进入他们的网站?

我尝试了这里的所有示例,但找不到任何解决方案。我想我错过了一些重要的事情。


你需要使用Windows您网站的身份验证模式。

<system.web>
    <authentication mode="Windows" />
    <authorization>
        <deny users="?" /> <!-- disable anonymous authentication -->
    </authorization>
</system.web>

...然后在当前用户的上下文下使用 LDAP 查询来获取有关用户的扩展信息:

using System.DirectoryServices;

using (var de = new DirectoryEntry("LDAP://DC=MYDOMAIN,DC=COM"))
using (var ds = new DirectorySearcher(de))
{
  ds.Filter = string.Format("(sAMAccountName={0})", HttpContext.Current.User.Identity.Name);
  ds.PropertiesToLoad.AddRange(new [] {
            "sn",  // last name
            "givenName",  // first name
            "mail",  // email
            "telephoneNumber",  // phone number
            // etc - add other properties you need
            });
  var res = ds.FindOne();

  foreach (string propName in res.Properties.PropertyNames)
  {
    ResultPropertyValueCollection valueCollection = res.Properties[propName];
    foreach (Object propertyValue in valueCollection)
    {
         Console.WriteLine("Property: " + propName + ": " + propertyValue.ToString());
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ASP.NET 获取 Active Directory 信息,无需用户名和密码 的相关文章

  • Xamarin 测试记录器选项有错误。无法记录自动化测试

    选项 gt Xamarin gt Xamarin Test Recorder 中的所有设置都有错误 我的桌面上安装了 Visual Studio 2015 企业版 以及 Xamarin 和 Xamarin Test Recorder 插件
  • 基于多线程的 RabbitMQ 消费者

    我们有一个 Windows 服务 它监听单个 RabbitMQ 队列并处理消息 我们希望扩展相同的 Windows 服务 以便它可以监听 RabbitMQ 的多个队列并处理消息 不确定使用多线程是否可以实现这一点 因为每个线程都必须侦听 阻
  • 如何将 mat 转换为 array2d

    我为dlib http dlib net face landmark detection ex cpp html那里的面部地标代码使用 array2d 来获取图像 但我喜欢使用 Mat 读取图像并转换为 array2d 因为 dlib 仅支
  • C 中的双重否定:是否保证返回 0/1?

    Is x 标准保证返回0 1 请注意 我是not询问 C 其中定义了 bool 类型 是的 在 C99 中 请参阅 6 5 3 3 4 逻辑非运算符的结果 是0如果其操作数的值比较 不等于0 1如果其操作数的值比较等于 0 结果具有类型in
  • 如何从命名空间内重载运算符<<

    这是我能想到的最小的包含示例 首先是类的标题 每当使用 pragma once ifndef EURO H define EURO H include
  • Xcode 新手无法用 C++ 打开文件?

    我一直在我参加的课程中使用 Windows 但我正在尝试运行基本代码来弄清楚如何从 Xcode 上的文件打开 关闭 输入 输出 而我通常在 Visual Studio 上使用的代码不是不知道为什么 谢谢 include
  • 如何检查给定调用站点的重载决策集

    如何检查重载解析集 我在多个调用站点中使用了 4 个相互竞争的函数 在一个调用站点中 我期望调用一个函数 但编译器会选择另一个函数 我不知道为什么 这不是微不足道的 为了了解发生了什么 我正在使用enable if disable if打开
  • 如何使用 Selenium Webdriver .NET 绑定设置 Chrome 首选项?

    这是我正在使用的 用户代理可以成功设置 而下载首选项则不能 Windows 7 Chrome 26 Selenium dotnet 2 31 2 chromedriver win 26 0 1383 0 ChromeOptions chro
  • 哪个更快?按引用传递与按值传递 C++

    我认为按引用传递应该比按值传递更快 因为计算机不复制数据 它只是指向数据的地址 但是 请考虑以下 C 代码 include
  • Bazel:将编译标志添加到默认 C++ 工具链

    我想向默认的 C 工具链添加一些编译器和链接器标志 以便我构建的所有目标 本地或导入 共享它们 我知道可以定义我自己的工具链 但我不想这样做 因为它非常复杂且容易出错 理想情况下我想要这样的东西 cc toolchain cc defaul
  • 为什么 std::atomic 比 volatile bool 慢很多?

    多年来我一直使用 volatile bool 来控制线程执行 并且效果很好 in my class declaration volatile bool stop In the thread function while stop do th
  • C# SignalR 异常 - 连接在收到调用结果之前开始重新连接

    我正在开发 2 个应用程序 第一个是 C 控制台应用程序 另一个是 Asp net Web 应用程序 我正在使用 SignalR 连接两者 这是我的 C 控制台应用程序 客户端 public class RoboHub public sta
  • C# 从今天起 30 天

    我需要我的应用程序从今天起 30 天后过期 我会将当前日期存储在应用程序配置中 如何检查应用程序是否已过期 我不介意用户是否将时钟调回来并且应用程序可以正常工作 用户太愚蠢而不会这样做 if appmode Trial string dat
  • 从 cin 读取整数序列并将它们存储在向量中

    这就是我读取整数的方法std cin并将它们存储在向量中 int number vector
  • 如何在RcppParallel中调用用户定义的函数?

    受到文章的启发http gallery rcpp org articles parallel distance matrix http gallery rcpp org articles parallel distance matrix 我
  • 如何使用 MongoDB 实现 ASP.NET Core 3.1 Identity?

    是一个 API 用于简化后端和逻辑代码来管理用户 密码 个人资料数据 角色 声明 令牌 电子邮件确认等 对于 Visual Studio 来说 支撑脚手架 https learn microsoft com en us aspnet cor
  • 如何缓存 ASP.NET 网站以获得更好的性能

    我是一名网页设计师 通常设计不需要更新的企业网站 所以我想将输出缓存一天 我怎样才能做到这一点 此外 任何有关在慢速服务器上提高 ASP NET 性能的建议都被接受 请注意 ASP NET 缓存有一个bug http connect mic
  • 为什么 getch 不可移植?

    是什么使得 getch 本质上无法作为标准 C 函数包含在内 对于控制台界面来说 它是如此直观和优雅 如果没有它 要求输入单个字符总是会产生误导 因为用户可以输入多个键 更糟糕的是 您经常需要确保在读取控制台输入后清除标准输入 这甚至不是作
  • 查找文本文件中每行的行大小

    如何计算每行中的字符或数字数量 是否有类似 EOF 的东西更像是行尾 您可以遍历行中的每个字符并不断增加计数器直到行尾 n 遇到 确保以文本模式打开文件 r 而不是二进制模式 rb 否则流不会自动将不同平台的行结束序列转换为 n 人物 这是
  • 使用 ImageResizer 获取图像尺寸的最佳方法

    我正在将现有的 MVC 4 网站从自制用户文件上传切换为在上传时使用 ImageResizer 调整文件大小 我在文档中看到我不应该使用 System Drawing 但我无法找出任何其他获取图像尺寸的方法 尺寸是来自原始图像还是调整大小的

随机推荐

  • 如何在 Perl 中读取不断更新的文件?

    您好 我想通读一个文件 进入睡眠状态 然后检查是否有新记录写入该文件 如果是 我想处理记录 如果否 则返回睡眠并稍后再次检查 在永远循环中 我以为我可以做这样的事情 但是在它第一次读取文件之后 它似乎永远不会获取添加到文件中的新记录 ope
  • 数据变量没有从 Vue.js 中使用 Vuex 的计算属性的观察者更新

    Fiddle https jsfiddle net mjvu6bn7 https jsfiddle net mjvu6bn7 我有一个计算属性的观察者 它依赖于 Vuex 存储变量 该变量是异步设置的 当这个计算属性发生变化时 我试图设置
  • 如何使用 SVN 和 .NET 以编程方式进行文件版本控制?

    我们有一个报告生成器 每天 它都会将数据写入 Excel 文件 出于版本控制和文件数据安全的原因 我们需要更改此文件 并将更改提交到存储库中 您推荐您使用过的任何 net SVN API 吗 你应该看看SharpSvn http sharp
  • Spring boot 动态查询

    我的网络应用程序中有一个过滤器 允许按车辆类型 品牌 燃料 州和城市进行搜索 但所有这些过滤器都是可选的 我怎样才能使用存储库来做到这一点 控制器类 RequestMapping value vehicle search method Re
  • 为什么 GCC (9.3.0) 中仍然没有实现 `gets_s()`?

    I know fgets 是更常见和广泛的字符串输入选项 但 C11 已经存在 9 年了 为什么是gets s 还失业吗 即使我添加 std c11 它仍然不起作用 尽管gets s 应该在stdio h 因为它是可选的 还有背后的人gcc
  • Bootstrap 手风琴展开/折叠全部无法正常工作

    这是打破这个的过程 单击乐谱 单击全部展开 折叠 单击乐谱 单击全部展开 折叠 再次单击全部展开 折叠 请注意 音乐符号不会重新打开 尽管您应该能够在函数中看到 逻辑表明所有面板都已关闭并且应该打开 为什么 我究竟做错了什么 HTML
  • 使用 TextFinder 搜索范围比搜索整个工作表慢

    我有一张有很多行的表 数千行 我想在特定列中搜索文本 我在用Range createTextFinder但它超时了 如果Sheet只有4行数据 甚至会超时 This is very slow var found sheet getRange
  • 为什么window.onload事件发生在$(document).ready之前?

    正如该线程中所述 window onload 与 document ready https stackoverflow com questions 3698200 window onload vs document ready The wi
  • shell脚本不通过crontab运行,手动运行正常

    我尝试导出我的路径和变量 但 crontab 仍然不会运行我的脚本 我确信我做错了什么 我有一个运行 jar 文件的 shell 脚本 这无法正常工作 阅读周围后 我发现这通常是由于 cron 通过其自己的 shell 实例运行而导致路径不
  • ArrayListMultimap 与 LinkedListMultimap 有何不同?

    所以 我只是在阅读 javadocArrayListMultimap and LinkedListMultimap为了了解如何使用它们 我开始知道两者都支持重复的键值对 我的意思是相同的键 不同的值 如果我理解正确的话 如果我错了 请纠正我
  • Java中如何从HashMap中获取对象

    我试图在给定密钥时从 HashMap 获取测试对象的速度 但我不太确定该怎么做 我尝试过这种方式 但它是错误的 hash values getSpeed 有什么帮助吗 谢谢 class Test private String id priv
  • 如何将数据库从资产文件夹复制到数据库文件夹

    我的代码如下 dbhelper java Override public void onUpgrade SQLiteDatabase db int oldVersion int newVersion if oldVersion gt new
  • 情节性的javascript。 'plotly_click' 上的不是一个函数

    我正在尝试在我的绘图图表上创建一个 onclick 事件 根据文档 我创建了以下图表 var graphDiv document getElementById uniqueId Plotly newPlot uniqueId charDat
  • 证书和配置文件

    我正在寻找有关对应用程序进行代码签名的不同步骤的更全面的指南 我已阅读配置门户中提供的指南 但我不了解证书和配置文件的概念以及开发人员和发行版之间的区别 在 XCode 中也有不同的方案 使用 XCode 4 我不明白它的目的 我已成功将应
  • 使用格式运算符 % 将 RGB 值的 numpy 数组转换为十六进制

    遵循这个SOquestion https stackoverflow com questions 3380726 converting a rgb color tuple to a six digit code in python使用格式化
  • 在 React 路由器重定向上运行 jquery 脚本

    我正在寻求移植我现有的网站 该网站使用主题来利用反应组件 该主题有很多使 UI 正确渲染的功能 包括几个动画 主题的js导入了很多其他的js库 这意味着我无法编写主题提供的任何 UI 元素的 React 版本 然而 实际上元素可以用作 哑组
  • Angular 2:从父组件获取RouteParams

    如何从父组件获取 RouteParams App ts Component RouteConfig path component HomeComponent as Home path username component ParentCom
  • GAS:从绑定脚本调用附加组件中定义的函数?

    我已经为电子表格编写了谷歌应用程序脚本代码 我想将其中的一部分作为附加组件发布 另一部分 作为绑定到电子表格的脚本 应该能够调用该附加组件中的函数 我在谷歌文档中没有找到任何关于此的提示 我读了如何在库中调用函数 调用附加组件中的函数是否类
  • 从通用接口扩展

    最后一排有什么问题吗 interface I1
  • 使用 ASP.NET 获取 Active Directory 信息,无需用户名和密码

    我正在尝试从 ASP NET Web 应用程序获取本地网络上用户的 Active Directory 信息 Web 应用程序运行在IIS在本地网络上 我想要的 当用户登录网站时 他们可以从 Active Directory 中看到自己的名字