问题标签 [http.sys]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
authentication - HTTP.sys kerberos 身份验证失败并出现 401 代码
我在 Windows Server 2016 上运行了 Web 应用程序。在这个应用程序中,我使用 HTTP.sys 并启用了协商身份验证。我还配置了 Active Directory,当我进入我的站点时,我看到 Web 浏览器获取 kerberos 票证并将其发送到服务器。
这是我的客户发送到服务器的票
将第二张票发送到服务器后,我收到了 401 错误的响应。
我使用网络监视器和 KerberosAuthenticationTester.exe 进行故障排除。虽然没有帮助。
我认为我在 http.sys 内核模式身份验证方面遇到了麻烦。我知道 http.sys 在系统帐户下运行,我必须为其注册 SPN,但我不知道如何找出它的名称。
所以我有两个主要问题。首先是如何注册SPN进行kerberos内核模式认证。第二个是我如何解决这些问题。我没有找到任何方法来查看 http.sys 票证验证过程的日志。
这是在我的域中注册的所有 spns 的列表
asp.net-web-api - WebApi:对 http 预留和 WebApi 路由使用不同的路由前缀
我有一个 Windows 服务,它通过 WebAPI 和 OData 使用 http.sys 公开一些 API(以促进端口共享):
我也对前缀 http.sys 有保留https://+:1234/
。
此外,我有一个使用此 API 的网站 (SPA),我希望它在同一端口上运行。到目前为止,这没问题,因为我在服务中有静态文件托管。由于各种原因,我将静态文件托管移动到了它自己的服务中。并将我的 http.sys 预订更改为:
静态文件托管(弱通配符):
https://*:1234/
服务(强通配符):
在我的服务中,我改变了我的
至
但是,现在到 WebApi 的路由是https://+:1234/api/api/
并且我什至可以使用https://+:1234/api/odata/
,这是可以理解的,但不是我想要的。
我可以欺骗 WebApi,虽然它在三个侦听 url 上向 http.sys 注册自己,但始终https://+:1234/
用作路由的基础?
delphi - 无法从作为服务运行的 appl 访问 SQL 表
我有一个小型测试应用程序,使用 Delphi 10.3.1 作为独立HTTPSYS Intraweb
服务制作。它有一个ADOConnection
和一个单元1的ADOTable
和FormShow
,我打开连接和表格并读取前10行并将它们添加到列表框中。只是为了看看它是否有效并且是可能的。
当应用程序作为独立运行时HTTPSYS
,带有可视化 GUI,它运行良好,但是当我将它编译为服务并将其安装在 sql 服务器或开发机器上时,它会因访问冲突而失败,试图打开桌子。我想这是一个身份验证问题。
我尝试打开与两者的连接Windows Auth
,并使用特定的 SQL 登录名,我尝试使用本地系统(默认)和特定的 SQL 帐户运行该服务。
我错过了什么?
特定 SQL 登录,适用于 SSMS。我可以使用它来登录和访问我的表格。
另外,如果我将应用程序创建为 aDLL
并将其放在我的 上IIS10
,它可以正常工作。
c# - 如何使用 Http.Sys 服务器启用 dotnet core 2.2 版的 http2?
我的机器/项目详情:
- Windows 版本为 10 Enterprise 1903(操作系统内部版本 18362.295)
- dotnet 核心版本是 2.2.106,目标框架版本是 4.6.2
这是在代码中设置服务器的方式:
但是使用 http 2.0 版调用仍会返回 1.1 的响应(下面的 LinqPad 脚本):
我从 2.0response.RequestMessage.Version
但 1.1 从response.Version
. 在响应中用google的returns 2.0替换本地uri(所以上面的代码是正确的)
HttpSysOptions也没有任何与 http2 相关的参数。有人知道我还缺少什么吗?
asp.net-core - 在 HTTP.sys 上使用 Windows 身份验证时如何避免多个 401
我有一个使用 .NET core 2.2 和 HTTP.Sys 的 Web API。我已经设置了 Windows 身份验证,当用户获得授权时,我可以看到 401 WWW-Negotiate 质询,然后是 200。
现在我已经多次执行相同的请求,但我发现每个请求都面临挑战,这会减慢系统速度并影响性能。我的示例客户:
我读到 IIS 似乎可以authPersistNonNTLM=true
在这里使用,但我无法为纯 HTTP.sys 设置类似的设置。任何想法?
谢谢,
c# - 从 iOS 设备获取 %windir%\System32\LogFiles\HTTPERR 中的“Request_Cancelled”
我们试图找出为什么对特定端点(http 或 https)的后台请求永远不会到达 IIS。IIS 日志显示来自我们设备的其他请求,但没有来自我们的后台请求。它们确实显示在 HTTP.SYS 日志中,但没有错误代码,只是一个“Request_Cancelled”
在不同的测试环境下,这些请求确实按预期工作。所以唯一的区别似乎是防火墙设置或者我们还没有找到的东西。
在搜索了可能的原因后,我看到了有关可能无效 SSL 证书的信息。我们目前不使用 https 来解决我们遇到问题的地方,并且在测试中我们都成功地尝试了这两种方法。另一个可能的原因可能是延迟,因此我们尝试为测试中的所有请求添加 10 秒的延迟,这也按预期工作。
此错误的其他原因可能是什么,并阻止了对 IIS 的请求?
.net - IIS 从响应中删除标头 - Server:Microsoft-HTTPAPI/2.0 when 400 Bad Request
我们正在尝试从 API 响应中删除服务器身份标头。我们在全局 web.config 和应用程序 web.config 中添加了重写规则并且工作正常,但是现在当我们将方法类型更改为“Trace”并将“Content-Length”值更改为大于 0 时,它会给出 400 错误。
此时服务器正在响应服务器标头:服务器:Microsoft-HTTPAPI/2.0 我们发现请求未到达服务器 Web 配置或内部应用程序。
服务器:Windows 服务器 2019 - IIS10
任何人都可以向我们建议如何从响应中删除该标头?我们已经尝试过注册表值更改修复但无法正常工作。
c# - Asp.Net 核心错误?带有 Windows 身份验证的 Blazor/Http.Sys 显示“连接已重置”?
更新: 刚刚尝试了官方示例https://github.com/aspnet/AspNetCore.Docs/tree/master/aspnetcore/fundamentals/servers/httpsys/samples/3.x/SampleApp并且它不起作用。
浏览器消息:
输出:
我使用 Windows 身份验证创建了一个新的 Blazor 应用程序。(Visual Studio 2019 V16.4.0,.Net Core 3.1)。
现在,在 Visual Studio 中使用 IIS Express 运行时,Windows 身份验证有效(网页右上角显示“Hello Domain\Username!”)。但是当作为 Kestrel 应用程序运行时,Windows 身份验证不起作用。
我按照以下链接中的步骤使 Windows 身份验证与 Http.Sys 一起工作。(顺便说一句,我试过 [Kestrel/Negotiate][1] 但没有运气)
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/httpsys?view=aspnetcore-3.1
基本上,它只是添加了webBuilder.UseHttpSys()
in CreateHostBuilder()
in的调用Program.cs
。
但是,运行应用程序会得到一个错误页面,其中包含以下消息
或者
Edge 的错误消息是:
IE 错误信息:
无法安全连接到此页面
这可能是因为该站点使用过时或不安全的 TLS 安全设置。如果这种情况持续发生,请尝试联系网站所有者。
c# - Kestrel/Http.sys HTTPS 配置错误?
我正在测试官方 Asp.Net 核心示例https://github.com/aspnet/AspNetCore.Docs/tree/master/aspnetcore/fundamentals/servers/httpsys/samples/3.x/SampleApp我正在使用 Visual Studio 2019 V16.4.0(.Net 3.1)
我注释掉了这一行// options.UrlPrefixes.Add("http://localhost:5005");
,因此它将分别为 https 和 http 使用默认端口 5001 和 5000。
问题 1:在 Visual Studio 中运行与执行 .exe 文件时,应用程序输出不同。
Visual Studio 显示它正在侦听https://localhost:5001。
但是,运行exe文件时,它不听https://localhost:5001
问题二:网页https://localhost:5001/报错?(在 Visual Studio 中运行时)
网页在 Chrome 中返回以下消息。
无法访问此站点
连接被重置。
在 Edge 中,它显示
无法安全连接到此页面
这可能是因为该站点使用过时或不安全的 TLS 安全设置。如果这种情况持续发生,请尝试联系网站所有者。
更新:
运行.\HttpSysSample.exe --urls https://*:5005
启用带有命令行执行的 https。但是,它会得到与上面相同的错误。
asp.net-core - 当请求具有某些可接受的接受编码标头值时,为什么 http.sys(在 IIS 之前)返回 badrequest?
给定一个 Web 应用程序(在 IIS 中托管的 netcoreapp3.0)——任何具有特定 Accept-Encoding 标头值的请求都不会到达应用程序。http.sys 解析并吐出 400 - BadRequest。
即,Accept-Encoding: application/gzip,gzip
问题似乎是“/”字符。
我们无法控制客户,也不想要求他们遵守/更改客户的要求。他们的请求适用于其他(非 IIS)服务器。
除非我没有正确阅读规范——我相信上述值对标题有效。考虑过在 github 中询问或报告错误 - dotnet/aspnetcore - 但不确定它是否是错误。
感谢您的任何建议。
想避免使用 apache 的 Kestrel | nginx 反向代理。