没有 .NET 的 Windows 身份验证标头。可能的?

2024-02-13

我想知道是否有人知道一种无需托管在 ASP 站点上即可使用 Windows 身份验证的方法。这是一个可以访问 LDAP 的 Intranet,所以我想知道是否有办法强制客户端向我提供数据,就好像数据来自 ASP 站点一样。我只需要登录域和用户名,我就可以从那里运行。在 Ubuntu 上使用 Node.js。有人对此有经验吗?


Update:现在有实现 Windows 集成身份验证的模块 https://www.npmjs.com/package/node-sspi.


In your 401响应,您需要提供WWW-Authenticate标头的值为NTLM,它通知浏览器它们需要发送 Windows 凭据。

response.writeHead(401, {
    'WWW-Authenticate': 'NTLM',
});

然后您就可以享受实施 NTLM 身份验证的乐趣了。引用自本文档有关 NTLM 身份验证协议 http://davenport.sourceforge.net/ntlm.html#ntlmHttpAuthentication:


  1. 客户端向服务器请求受保护的资源:

    GET /index.html HTTP/1.1
    
  2. 服务器响应一个401status,表明客户端必须进行身份验证。NTLM通过以下方式呈现为受支持的身份验证机制WWW-Authenticate标头。通常,服务器此时关闭连接:

    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: NTLM
    Connection: close
    

    请注意,如果 NTLM 是第一个提供的机制,Internet Explorer 将仅选择它;这与 RFC 2616 不一致,RFC 2616 规定客户端必须选择支持的最强身份验证方案。

  3. 客户端重新提交请求Authorization标题包含一个类型 1 消息 http://davenport.sourceforge.net/ntlm.html#theType1Message范围。类型 1 消息采用 Base-64 编码进行传输。从此时起,连接将保持打开状态;关闭连接需要重新验证后续请求。这意味着服务器和客户端必须通过 HTTP 1.0 样式的“Keep-Alive”标头或 HTTP 1.1(默认情况下使用持久连接)支持持久连接。相关请求头如下:

    GET /index.html HTTP/1.1
    Authorization: NTLM TlRMTVNTUAABAAAABzIAAAYABgArAAAACwALACAAAABXT1JLU1RBVElPTkRPTUFJTg==
    
  4. 服务器回复一个401状态包含类型 2 消息 http://davenport.sourceforge.net/ntlm.html#theType2Message in the WWW-Authenticate标头(同样是 Base-64 编码)。如下所示。

    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: NTLM TlRMTVNTUAACAAAADAAMADAAAAABAoEAASNFZ4mrze8AAAAAAAAAAGIAYgA8AAAARABPAE0AQQBJAE4AAgAMAEQATwBNAEEASQBOAAEADABTAEUAUgBWAEUAUgAEABQAZABvAG0AYQBpAG4ALgBjAG8AbQADACIAcwBlAHIAdgBlAHIALgBkAG8AbQBhAGkAbgAuAGMAbwBtAAAAAAA=
    
  5. 客户端通过重新提交请求来响应类型 2 消息Authorization包含 Base-64 编码的标头类型 3 消息 http://davenport.sourceforge.net/ntlm.html#theType3Message:

    GET /index.html HTTP/1.1
    Authorization: NTLM TlRMTVNTUAADAAAAGAAYAGoAAAAYABgAggAAAAwADABAAAAACAAIAEwAAAAWABYAVAAAAAAAAACaAAAAAQIAAEQATwBNAEEASQBOAHUAcwBlAHIAVwBPAFIASwBTAFQAQQBUAEkATwBOAMM3zVy9RPyXgqZnr21CfG3mfCDC0+d8ViWpjBwx6BhHRmspst9GgPOZWPuMITqcxg==
    
  6. 最后,服务器验证客户端类型 3 消息中的响应并允许访问资源。

     HTTP/1.1 200 OK
    

获取用户的用户名应该很容易——它在 Type 3 消息中以纯文本形式发送。实际上验证他们是否提供了正确的密码完全是另一回事。实现所有这些都作为读者的练习。

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

没有 .NET 的 Windows 身份验证标头。可能的? 的相关文章

  • 如何在 App-Engine 上运行的基于 Express 的 Node JS 应用程序中获取远程客户端的 IP 地址

    尝试获取 IP 时 所有标准标头值都包含不正确的值 req ip ffff 172 17 0 5 req headers x forwarded for 169 254 160 2 req socket remoteAddress ffff
  • 为什么无论 -rdynamic 如何,backtrace 都不包含 Objective-C 符号?

    Update 我正在 Linux 上使用 GNU 运行时 问题是not发生在带有 Apple 运行时的 MacOS 上 更新2 我在 MacOS 上编译了 GNU 运行时并用它构建了示例 该错误确实not发生在带有 GNU 运行时的 Mac
  • Dialogflow 简单的授权方法

    是否存在将 Dialogflow 代理连接到的简单方法node js代码 当我将此代码与从 Dialogflow 代理的设置页面获取的正确项目 ID 一起使用时 出现以下错误 错误 获取应用程序默认凭据时出现意外错误 无法加载默认凭据 浏览
  • mocha.opts 已弃用,如何迁移到 package.json?

    我正在开发一个大型项目 自从上周我更新了摩卡以来 现在我们收到警告 DeprecationWarning 通过 mocha opts 进行的配置已被弃用并且 将从 Mocha 的未来版本中删除 使用 RC 文件或 改为 package js
  • npm WARN 已弃用 [email protected]:改用 uuid 模块

    当我尝试时 npm install g cordova latest总是得到npm 警告已弃用 电子邮件受保护 cdn cgi l email protection 使用 uuid 模块代替 mac 操作系统塞拉利昂 10 12npm v
  • Express JS:请求的资源上不存在“Access-Control-Allow-Origin”标头

    我有一个在服务器上运行的 API 和一个连接到它以检索数据的前端客户端 我对跨域问题做了一些研究并使其发挥作用 但我不确定发生了什么变化 我现在在控制台中收到此错误 XMLHttpRequest 无法加载https api mydomain
  • 如何使 fs.readFile 异步等待?

    我这里有这个 NodeJS 代码 它读取文件夹并处理文件 该代码有效 但它仍然是先打印所有文件名 然后只读取文件 如何获取一个文件 然后先读取该文件的内容 而不是先获取所有文件 async function readingDirectory
  • Linux 中有没有一种轻量级的方法来获取当前进程数?

    我希望我的 基于 C C 的 程序显示一个数字指示器 指示本地系统上当前有多少个进程 将经常查询正在运行的进程数值 例如每秒一次 以更新我的显示 有没有一种轻量级的方法来获取该数字 显然我可以调用 ps ax wc l 但我不想强迫计算机生
  • grep 彩色线条

    我编写了一个简单的 PHP shell 脚本 它解析文件并输出某些元素 它产生大量的输出 采用不同的 bash 颜色 绿色表示正常 黄色表示警告 红色表示错误等 在开发过程中我想过滤掉一些行 例如 所有包含红色文本的行 我可以使用grep
  • express-session:滚动会话过期配置

    所以我在 mongo 商店中使用快速会话 如下所示 app use session secret some secret here saveUninitialized false resave false store new MongoSt
  • 如何在 Sails.js 中嵌入和编写 mongo 对象(超过一层深度)?

    从 sails js 示例来看 Person js var Person attributes firstName STRING lastName STRING age type INTEGER max 150 required true
  • AWS Lambda 上的 NodeJS 集群

    是否可以在 lambda 函数中使用 cluster 模块 我试过这个 use strict var cluster require cluster var http require http var os require os var n
  • 阻止 Mongoose 为子文档数组项创建 _id 属性

    如果您有子文档数组 Mongoose 会自动为每个子文档创建 id 例子 id mainId subDocArray id unwantedId field value id unwantedId field value 有没有办法告诉 M
  • Node.js 中的 webRTC

    我想在node js 中使用webRTC 来管理涉及浏览器和nodejs 上的对等点的混合连接 我做了一些测试和搜索 我尝试使用wrtc https github com js platform node webrtc or webrtc
  • 对自定义打字稿错误实例实施instanceof检查?

    打字稿有这个instanceof 检查自定义错误 https github com Microsoft TypeScript issues 13965问题 但尚不清楚我们需要做什么才能得到instanceof在职的 例如对于这个异常我们如何
  • 如何在 Ubuntu/Linux 发行版中安装 Tesseract-OCR 3.03?

    我和一个朋友有兴趣为 CV 项目训练 tesseract OCR 引擎 我们尝试使用一些包装器 例如 PyTesser 和 pyocr 但结果目前不如我们需要的那么准确 因此 我们希望尝试训练超立方体以更好地实现我们的目的 即识别食品标签上
  • NodeJS 无法加载 css 文件

    所以我正在尝试制作一个 NodeJS 服务器 并且我尝试保留尽可能少的附加组件 但是 我遇到了一个问题 我似乎无法加载任何内容CSS我调用的文件HTML文件 该调用似乎确实由服务器处理 但它不会显示在浏览器中 My 网络服务器 js fil
  • Linux 上的“软/硬 nofile”是什么意思

    当我尝试在RedHat EL5上安装软件时 我得到了错误 软 硬nofile的期望值是4096 而默认值是1024 我设法增加了这个数字 但我不知道参数是什么 他们指的是软链接和硬链接吗 我改变的方法是 a 修改 etc security
  • 使用 dnode 从服务器向客户端发送消息

    几个月前 我发现了 nowjs 和 dnode 并最终使用了 nowjs 并且https github com Flotype nowclient https github com Flotype nowclient 用于客户端 服务器双向
  • 未处理的拒绝:发送后无法设置标头

    我正在 Dialogflow 中创建一个聊天机器人 当我尝试将数据添加到数据库时 它抛出了 未处理的拒绝 错误 这是我的index js文件 use strict const functions require firebase funct

随机推荐

  • 计算文本区域字符数

    我正在为我的文本区域开发字符计数website http ilanshomekitchen x10 mx new contact html 现在显示NaN 因为它似乎没有找到该字段中有多少个字符的长度 该字段一开始是0 所以数字应该是500
  • NHibernate (+ FluentNhibernate) : 连接两个独立的表

    我在创建具有共同属性的两个实体的联接时遇到问题 但它们没有映射在一起 假设您有一个实体 Article 其中包含属性 FamilyCode 和一个具有属性 Code 和 Label 的实体 Family 在我的映射中 Article 没有引
  • 如何“深度”克隆闭源第三方类的属性?

    The ICloneable http msdn microsoft com en us library system icloneable v vs 100 aspx NET框架的接口通常提供一种方法来支持cloning http en
  • 当特定部分出现在屏幕上时切换类[重复]

    这个问题在这里已经有答案了 我正在制作一个大滚动页 我的导航是固定位置的 当导航到达我页面上的特定部分时 我想更改导航上的颜色 从黑色到白色 反之亦然 因为有些是白色的 有些是黑色的 我想做一个对比 我已经在 css 中创建了一个应该切换的
  • Chef 客户和验证者

    我试图理解 Chef 客户端和验证器的概念 以及它们与引导过程的关系 根据本文 http docs opscode com server manage clients html 厨师 客户将使用 etc chef validation pe
  • 为什么 isNaN('') 或 isNaN("") 为 false(单引号或双引号被视为有效数字)?

    我需要一个内置函数来检查变量是否包含 Javascript 中的有效数字 如下这个链接 https stackoverflow com questions 175739 built in way in javascript to check
  • TabLayout重心不起作用

    我有一个 TabLayout 我希望选项卡显示在屏幕中央 下面是我的 TabLayout 的 XML
  • 如何在 gulp 任务中运行 shell 命令并检测它何时完成?

    我正在尝试使用以下命令在 gulp 任务中运行 shell 命令child process spawn 我必须检测任务何时完成运行 所以我正在使用stdout检查我在命令末尾发出的特定字符串 但由于某种原因 它看起来不像我的字符串正在发出
  • 如何在 XSLT 中调用点网程序集/命名空间

    我正在 XSLT 中编写点网代码 当我调用任何名称空间或在 XSLT 中写入 using 指令时 它会给出以下错误 错误 无法识别 com myassemble 是否可以在 xslt 中使用任何程序集 这是可能的 并且您需要使用扩展对象 h
  • TCPDF 将底部边距设置为零

    我正在 php 中使用 TCPDF 创建 pdf 我需要将我的数据包含到没有下边距的 pdf 中 数据将包含在页面末尾 pdf gt SetLeftMargin 14 pdf gt SetTopMargin 6 pdf gt SetFont
  • super() 和显式 super(Cl,self) (带有 __slots__ 和 attrs)有什么区别

    我正在使用attrspython 包 结合继承和槽 我想从派生方法中调用父类的方法 该问题演示如下 import attr attr s slots True class Base def meth self print hello att
  • javascript:获取函数中传递的实际参数的名称

    我们能知道函数中传递的实际参数的名称吗 喜欢 func a b c d 当我们调用它时 我希望在输出中打印 a b c d 就像我将 func 定义为 function func e f g h do something here so t
  • DataAnnotation 正则表达式对于文件输入始终返回 false

    我已经尝试了很多正则表达式RegularExpression数据注释来检查文件扩展名是否是图像 并且它总是返回 false 例如我也尝试过FileExtension属性 但它会在 jquery validation 上产生错误 我正在使用
  • 读取输入后无法写入输出

    我正在编写一个连接到 servlet 的程序 这要归功于HttpURLConnection但我在检查网址时卡住了 public void connect String method throws Exception server HttpU
  • Android 关闭自定义对话框

    我正在尝试让自定义对话框在按下按钮时关闭 set up dialog Dialog dialog new Dialog BrowseActivity this dialog setContentView R layout about dia
  • 使 Eclipse 出现错误时不运行项目

    是否可以使 Eclipse Helios SR2 在出现错误时不运行您的项目 而不是提示答案或无论如何运行 设想 在 Eclipse 中 我点击了 运行 按钮 有编译错误 Eclipse 询问我是否仍要继续运行 我有 是 和 否 两个选项
  • 标签“bg”不存在

    这是我的标签代码 from Tkinter import Tk BOTH Canvas Text END import Tkinter as tk from ttk import Frame Button Style Label Entry
  • SUMIF 单元格不是公式

    我正在尝试创建一个 Excel 电子表格 其中包含公司每位员工的一行 其中每列引用他们每周的工作时间 最初 单元格中填充的是另一张工作表中的预期每周工作小时数 但随后会手动替换为人们每周实际工作的小时数 我希望能够对人们实际工作的小时数进行
  • Web 共享 API 级别 2 PDF 支持

    我正在为我的 PWA 应用程序使用网络共享级别 2 除了 PDF 之外 所有媒体格式都可以正常工作 Web api 返回 PDF 的 base64 字符串 在客户端 我正在从中创建 blob 对象 但是当我分享它时 抛出异常 权限被拒绝 v
  • 没有 .NET 的 Windows 身份验证标头。可能的?

    我想知道是否有人知道一种无需托管在 ASP 站点上即可使用 Windows 身份验证的方法 这是一个可以访问 LDAP 的 Intranet 所以我想知道是否有办法强制客户端向我提供数据 就好像数据来自 ASP 站点一样 我只需要登录域和用