在重定向时保持 HTTP 基本身份验证处于活动状态

2023-11-21

我们正在使用具有基本身份验证的网络服务。 一切都很顺利,直到 Web 服务的所有者实施了平衡服务。 这只是将请求重定向到 Web 服务的不同实例。

问题是重定向后基本身份验证失败。 存在“请求身份验证凭据未通过”异常。

附加信息:

  1. 我们必须手动创建请求。

        var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(Settings.Default.HpsmServiceAddress));
    
        req.Headers.Add("Authorization", "Basic aaaaaaaaaaa");
        req.PreAuthenticate = true;
        req.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
        req.UserAgent = "Apache-HttpClient/4.1.1 (java 1.5)";
        req.KeepAlive = false;
    
        ServicePointManager.Expect100Continue = false;
    
        req.ContentType = "text/xml; charset=utf-8";
        req.Method = "POST";
        req.Accept = "gzip,deflate";
        req.Headers.Add("SOAPAction", actionName);
        byte[] buffer = Encoding.UTF8.GetBytes(envelop);
        Stream stm = req.GetRequestStream();
        stm.Write(buffer, 0, buffer.Length);
        stm.Close();
    
        WebResponse response = req.GetResponse();
        string strResponse = new StreamReader(response.GetResponseStream()).ReadToEnd();
        response.Dispose();
    
  2. 我们通过 HTTP 307 重定向进行重定向


按照 MSDN 的 HttpWebRequest.AllowAutoRedirect 属性我发现了这个:

自动重定向时会清除授权标头和 HttpWebRequest 自动尝试重新验证 重定向的位置。实际上,这意味着应用程序不能 将自定义身份验证信息放入 Authorization 标头中,如果 有可能会遇到重定向。相反,应用程序必须 实现并注册自定义身份验证模块。这 System.Net.AuthenticationManager 及相关类用于 实现自定义身份验证模块。这 AuthenticationManager.Register方法注册自定义 认证模块。

解决方案是编写自定义身份验证模块。

这是我发现的:

http://msdn.microsoft.com/en-us/library/system.net.authenticationmanager.aspx

这里是AllowAutoRedirect属性页面:

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.allowautoredirect.aspx

UPDATE

您可以尝试使用 CredentialCache 而不是向 webrequest 添加标头吗?

CredentialCache myCache = new CredentialCache();

myCache.Add(
new Uri("http://www.contoso.com/"),"Basic",new NetworkCredential(UserName,SecurelyStoredPassword));
req.Credentials = myCache;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在重定向时保持 HTTP 基本身份验证处于活动状态 的相关文章

随机推荐

  • git fatal:对象错误:unshallow

    我正在尝试取消浅层存储库 bin git clone shallow since 3 years https github com RobertAudi zsh hooks Cloning into zsh hooks remote Enu
  • 具有透明重定向功能的 PayPal PayFlow Pro - 用户身份验证失败问题/文档

    我在集成和查找当前文档时遇到一些困难 集成PayPal PayFlow 专业版进入我的网站 PayFlow Link 这里有一个类似的问题 https stackoverflow com questions 15808604 result
  • 在 woocommerce 中注册并重定向到登录页面时防止自动登录?

    我正在使用 woocommerce wordpress 设计一个网站 我通过参考将登录和注册页面分开这个解决方案 注册成功后 如何在未登录的情况下将注册页面重定向到登录页面 用户需要使用通过电子邮件发送的用户名和密码登录 我的登录页面是 w
  • 用于构建和查找整数范围集的数据结构

    我有一套uint32整数 集合中可能有数百万个项目 其中 50 70 是连续的 但在输入流中它们以不可预测的顺序出现 我需要 将此集合压缩为范围以实现空间有效的表示 已经使用简单的算法实现了这一点 因为仅计算一次的范围速度在这里并不重要 经
  • 如何使用非官方 Android Market API?

    我正在尝试来自的示例代码here 但我的应用程序崩溃了 我添加了日志记录 发现它崩溃了session flush 所以我删除了那条线 它不再崩溃了 但还没有达到onResult打回来 package com mytest app impor
  • XAML 中的多重绑定作为资源

    是否可以 如果是的话如何 添加多值绑定表达到资源中 我有一个多值绑定 它需要 2 个单独的绑定 并且其中一个绑定中包含转换器参数 我必须使用此绑定到 5 个不同的项目 并且这些绑定标签仅在转换器参数上有所不同 其余一切都一样 我会避免重复多
  • iPhone模拟器可以模拟打电话吗?

    我正在构建一个可以打电话的应用程序 如何在模拟器上测试此功能 我打电话时没有得到回应openURL 当然 这在实际设备上确实有效 还可以知道iPhone当前是否处于通话模式吗 对不起 朋友 您无法在模拟器上签入它 一切顺利
  • 在 R 中使用 geom_密度_2d() 时出错:“stat_密度2d()”中计算失败:带宽必须严格为正数

    在尝试使用 ggplot2 制作测试二维密度图时 我使用了代码片段 ggplot df aes x S1 x y S1 y geom point geom density 2d 我收到错误 计算失败stat density2d 带宽必须严格
  • C++:特殊化成员需要 «template<>» 语法

    我究竟做错了什么 template
  • 您如何构建 Git 存储库工作流程?

    我们已经看过并观看了有关大型分布式团队如何使用 Git 的视频 但是我们这些非分布式团队以及与团队其他成员在办公室工作的人又如何呢 我们应该如何构建我们的存储库和工作流程 想想一直使用 Subversion 或 CVS 作为单点权限的传统办
  • 在 Git 中列出冲突文件的最简单方法是什么?

    我只需要一个简单的列表矛盾的 files 还有比以下更简单的事情吗 git ls files u cut f 2 sort u or git ls files u awk print 4 sort uniq 我想我可以设置一个方便的alia
  • Bash 脚本错误 [: !=: 需要一元运算符

    在我的脚本中 我试图错误检查第一个也是唯一的参数是否等于 v 但它是一个可选参数 我用一个if声明 但我不断收到一元运算符预期错误 这是代码 if 1 v then echo usage 0 v exit fi 更具体 上面脚本的这一部分正
  • ASP.NET TextBox - 是否可以使用行内代码 <% %> 初始化文本属性

    我需要使用其他地方的属性来初始化文本框元素的文本属性 实际上我可以简单地从代码中执行此操作 但如果可以这样做会更方便
  • 如何用LocalDate查询LocalDateTime?

    我有一个类 其中包含 java time LocalDateTime 类型的属性 public class MyClass private LocalDateTime fecha 我正在使用 Spring 数据存储库 我想要完成的是根据日期
  • 使用 JSTL 如何将值“放入”HashMap

    我希望仅使用 JSTL 设置 HashMap 的键值对 这可能吗 我知道如何检索键值对 但我还没有找到设置它们的方法 任何帮助 将不胜感激 使用 JSTL 检索 HashMap 键 值对的示例
  • 在 iPhone 上查找用户文档目录的最佳方式是什么?

    我正在读艾丽卡 萨顿的书iPhone 开发者指南 并遇到了一个问题 她在书中说 找到用户的Documents目录的方法是用代码 NSHomeDirectory stringByAppendingPathComponent Documents
  • 刷新页面不丢失Post值

    页面刷新时如何维护 post 值 换句话说 如何刷新页面而不丢失 Post 值 如果没有首先提交页面 这是不可能的 除非您以某种方式将表单字段提交回服务器 即没有使用 jQuery 等进行页面刷新 某种自动保存表单脚本 如果这是为了验证检查
  • 通过 AJAX MVC 下载 Excel 文件

    我在 MVC 中有一个大的表单 我需要能够生成一个 Excel 文件 其中包含该表单子集的数据 棘手的一点是 这不应影响表单的其余部分 因此我想通过 AJAX 来完成此操作 我遇到了一些似乎相关的问题 但我不太明白答案的含义 这似乎最接近我
  • 为什么有人会使用#define 来定义常量?

    这是一个简单的问题 但为什么有人会使用 define定义常量 有什么区别 define sum 1 and const int sum 1 define有许多不同的应用程序 但您的问题似乎与一个特定的应用程序有关 定义命名常量 在 C 中很
  • 在重定向时保持 HTTP 基本身份验证处于活动状态

    我们正在使用具有基本身份验证的网络服务 一切都很顺利 直到 Web 服务的所有者实施了平衡服务 这只是将请求重定向到 Web 服务的不同实例 问题是重定向后基本身份验证失败 存在 请求身份验证凭据未通过 异常 附加信息 我们必须手动创建请求