如何使用VS调试服务器实现基本的HTTP认证?

2023-12-12

我正在为 ActiveX HTTP 控件制作一个测试装置,并且需要创建一个可以安全发布的网站。为了简单起见,我使用 VS 调试服务器运行 Web 应用程序; Web 应用程序项目是测试应用程序解决方案的一部分。 AX 控件不支持 NTLM 身份验证。有没有简单的方法可以要求非常基本的 http 身份验证,而无需 NTLM 或重定向到页面表单?我只需要它在发帖过程中需要用户名和密码。用户名和密码内容并不重要,因此所有内容都将以明文形式存储。

我已经尝试过Web.Config中的身份验证模式; Windows 看起来与 NTLM 相同(可能有问题),Forms 需要一个表单来连接并设置 cookie,Passport 超出了该项目的范围,而且我不知道如何实现 None。有任何想法吗?

我在 Web.Config 中尝试了“身份验证模式=“Windows””,并选中了 Web 应用程序的“Web”选项卡中的 NTLM 复选框。


您可以使用 ASP.NET 实现您自己的基本 HTTP 身份验证。它似乎没有就像一个非常复杂的规范,但是请参阅RFC1945了解所有详细信息。

如果我必须这样做,我会从HttpModule对每个请求运行并检查 HTTP 标头HTTP_AUTHORIZATION。如果它是基本身份验证的标头,那么您可以解码用户名和密码。如果标头丢失或用户名和密码不正确,则发回 HTTP 401 响应并添加WWW-Authenticate header.

像这样的东西(未经测试,但你明白了):

public class BasicAuthenticationModule: IHttpModule
{
  public void Init(HttpApplication application)
  {
    application.AuthenticateRequest += new EventHandler(Do_Authentication);
  }

  private void Do_Authentication(object sender, EventArgs e)
  {
    var request = HttpContext.Current.Request;
    string header = request.Headers["HTTP_AUTHORIZATION"];
    if(header != null && header.StartsWith("Basic "))
    {
      // Header is good, let's check username and password
      string username = DecodeFromHeader(header, "username");
      string password = DecodeFromHeader(header, password);

      if(Validate(username, password) 
      {
        // Create a custom IPrincipal object to carry the user's identity
        HttpContext.Current.User = new BasicPrincipal(username);
      }
      else
      {
        Protect();
      }
    }
    else
    {
      Protect();
    }
  }

  private void Protect()
  {
    response.StatusCode = 401;
    response.Headers.Add("WWW-Authenticate", "Basic realm=\"Test\"");
    response.Write("You must authenticate");
    response.End();
  }

  private void DecodeFromHeader()
  {
    // Figure this out based on spec
    // It's basically base 64 decode and split on the :
    throw new NotImplementedException();
  }

  private bool Validate(string username, string password)
  {
    return (username == "foo" && pasword == "bar");
  }

  public void Dispose() {}

  public class BasicPrincipal : IPrincipal
  {
    // Implement simple class to hold the user's identity
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用VS调试服务器实现基本的HTTP认证? 的相关文章

  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 当下拉列表内部触发选定索引更改事件时,引导模式关闭

    我在 Bootstrap 模式中有一个 ASP NET 图表 一切都工作正常 直到我在里面添加了一个下拉列表 每次我在下拉列表中选择一个新项目时 所选项目更改事件都会触发 并且如果事件内没有代码 则 Boostrap 模式会关闭 这是模式引
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大

随机推荐

  • 使用 ScheduleJobs 调用计划

    我一直在试图弄清楚如何在 Quartz Net 中调用 ScheduleJobs 方法 但努力创建它所期望的正确参数 这是我尝试过的 IJobDetail jobDetail JobBuilder Create
  • UILabel 中的文本可以分配有 colorWithPatternImage: 吗?

    如果是这样 图像可以动画化吗 有充分的理由不这样做吗 内存使用情况等 是的 标签可以有图案颜色 替代文本 http img178 imageshack us img178 1995 textwithpatterncolor png make
  • 没有名为tensorflow.python.platform的模块

    我在跑步tensorflow g3doc tutorials mnist fully connected feed py I get hiro106 hiro106 virtual machine python tensorflow ten
  • 无法通过 Watir 连接到 Tor-Firefox

    我在通过 Ruby Watir webdriver 连接到 Tor 时遇到问题 我使用 Tor 浏览器捆绑包 问题是 当我尝试通过 Watir Selenium 连接时 我似乎无法打开 Tor 而不是常规的 Firefox 看着类似的问题
  • 两个 Android 应用和一个 Firebase 数据库

    我需要为两个 Android 应用程序使用一个 Firebase 数据库 一个应用程序将具有对数据库的写访问权限 另一个应用程序将具有对数据库的读访问权限 这两个应用程序必须分开 我无法合并它们 我可以为两个应用使用一个 Firebase
  • 如何检测 UI 和游戏对象上的点击/触摸事件

    如何在android中检测Canvas on Touch上的UI对象 例如 我有一个画布 其中有 5 个对象 例如Image RawImage Buttons InputField等等 当我触摸 Button UI 对象时然后执行某些操作
  • 根据对象属性值在 Cloudant (CouchDB) 中创建视图

    我一直在尝试找到满足此要求的解决方案 但遇到了很多死胡同 我在用着Cloudant作为我的用户文档的数据存储 每个用户文档都有一个名为 items 的字段 属性 它是一个对象数组 所以用户文档看起来像这样 id userid1 rev XX
  • 在 Swift 中创建 PDF

    我正在关注苹果的文档在 Swift 中使用 Xcode6 Beta6 创建 PDF 文件 var currentText CFAttributedStringRef CFAttributedStringCreate nil textView
  • 如何一次性将 df 列值映射到十六进制颜色?

    我有一个包含两列的 pandas 数据框 其中一列值需要映射到十六进制颜色 另一个绘图过程从那里接管 这是我到目前为止所尝试过的 部分玩具代码取自here import pandas as pd import matplotlib impo
  • 如何在R中使用fportfolio包进行非时间序列输入?

    对于 fportfolio 包 您需要将回报的时间序列作为输入 并在内部计算预期回报和时间序列的方差 然后在诸如 portfoliofrontier 或 tangencyportfolio 等函数中使用 但就我而言 我已经有了预期收益矩阵和
  • 打开键盘时无法滚动到结果末尾 (Windows Phone)

    我正在开发 Windows Phone 应用程序 但遇到了这个问题 我有一个显示搜索结果的列表控件 但是当打开键盘时 由于键盘原因 某些结果不可见 有没有办法将控件缩小到键盘边框 为了看到所有的结果 即使键盘打开 我也想滚动直到结果末尾 有
  • Java正则表达式:重复组?

    如何在 Java Regex 中定义重复组 假设一个 2 位数字 0 9 2 多次由 分隔 12 34 98 11 这是可能的还是唯一的机会 编辑 我喜欢验证和提取 在Java中你也可以使用Scanner用于此目的的 API final P
  • 持续交付的原则

    如上所述here 以下是持续交付的原则 Every build is a potential release Eliminate manual bottlenecks Automate wherever possible Have auto
  • 创建高级过滤器

    我正在尝试从 C 在 Excel 中创建高级过滤器 以将唯一数据从一张工作表复制到另一张工作表 至少我在 Excel 中得到它 并且如果我使用这样的互操作 Excel Range rang sheet2 get Range A2 Excel
  • 代码点火器 + HMVC + REST

    我正在开发基于 Codeigniter HMVC 的应用程序 我正在尝试添加一个新模块 我用菲尔 斯特金的REST 控制器 2 6 0 and Format用于将 REST API 创建为模块的库 当我尝试获取例如http api exam
  • PHP 分层数组 - 父级和子级

    我使用 PHP 和 mySQLIdiorm 这可能不相关 我的 PHP 数组 这是父母和孩子之间的关系 0 是根父级 示例 根父级 0 有子级 33 其子级 27 有 孩子 71 如果需要解决问题 可以更改此数组结构 array 33 gt
  • 更新资源管理器配置而不重新启动它

    我想知道是否有一种方法可以刷新 HKLM 注册表项 HKCU SOFTWARE Microsoft Windows CurrentVersion Policies Explorer 无需重新启动 shell 我希望能够在不重新启动资源管理器
  • NestJs/TypeORM:如何保存多对多

    我正在尝试保存多对多关系 每个实体本身都运行良好 这是我正在使用的两个实体文件 location entity ManyToMany type gt User user gt user locations eager true cascad
  • mod-rewrite 转发而不改变 URL

    创建 漂亮 URL 时 我的 Apache 配置有一个小问题 我已经到了输入 或链接 到的阶段 索引 html 将您转发至 index php pageID Forside 这正是我想要的 但是如何才能让index html留在浏览器的地址
  • 如何使用VS调试服务器实现基本的HTTP认证?

    我正在为 ActiveX HTTP 控件制作一个测试装置 并且需要创建一个可以安全发布的网站 为了简单起见 我使用 VS 调试服务器运行 Web 应用程序 Web 应用程序项目是测试应用程序解决方案的一部分 AX 控件不支持 NTLM 身份