当前位置: 首页 > 知识库问答 >
问题:

泽西客户端:Jenkins重定向时身份验证失败

班泽语
2023-03-14

我试图使用Jenkins的REST api。Jenkins需要向URL发送POST请求来删除作业。其结果如下:

  1. 我告诉我选择的客户端将一篇文章发送到适当的URL。
    客户端发送一篇文章,并使用用户名和密码对自己进行授权。
  2. Jenkins删除作业。
  3. Jenkins返回一个“302-Found”,其中包含包含已删除作业的文件夹的位置。
  4. 客户端自动将邮件发送到该位置。
  5. Jenkins回答“200-OK”和文件夹页的完整HTML。

这对邮递员来说很好(当然,除非我禁用了“自动跟踪重定向”)。然而,Jersey在第5步一直运行到“404”,因为我阻止匿名用户查看有问题的文件夹。(如果我完全阻止匿名用户,则为“403”。)注意,身份验证在步骤1中工作,因为作业已被成功删除!

HttpAuthenticationFeature auth = HttpAuthenticationFeature.basicBuilder()
    .credentials(username, token)
    .build();
Client client = ClientBuilder.newBuilder()
    .register(auth)
    .build();
WebTarget deleteTarget = client.target("http://[Jenkins-IP]/job/RestTestingArea/job/testJob/doDelete")  
Response response = deleteTarget.request()
    .post(null);

与这个问题大致相关的问题--如果我能够记录第二个请求,我可能能够理解幕后发生的事情。

Edit2:我也确定了问题显然是与身份验证有关的。如果我允许匿名用户查看有问题的文件夹,错误将消失,服务器将回答200。

共有1个答案

唐照
2023-03-14

我在保罗·萨索塔和高萨姆的帮助下找到了答案。

TL;DR:这是预期的行为,您必须设置系统属性http.strictpostredirect=true以使其工作或自己执行第二个请求。

正如这里所描述的,HTTPurlConnection决定不实现HTTP标准中定义的重定向,而是像许多浏览器实现重定向一样(因此,用外行的话来说,“像其他人一样做,而不是它应该如何工作”)。这会导致以下行为:

    null
 类似资料:
  • 遵循这个指南:https://www.youtube.com/watch?v=bqkt6eSsRZs 添加了从laravel docs的auth路由 创建登录/注册视图 创建 /home路线 自定义AuthController: 尝试访问身份验证/登录时,我遇到以下错误: 请求中出现错误异常。php第775行:。。未根据请求设置会话存储。 已将身份验证路由移动到中间件组。 成功注册,在数据库和会话

  • 我正在组装一个soap客户端来调用第三方soap服务。我在连接Java时遇到问题。它在SoapUI上运行良好。这是我第一次在应用程序中设置密钥库。我发现的所有代码都是相同的,非常简单,但我不明白为什么java版本不起作用。。我使用的是该公司提供的TLS pfx文件,我也在尝试连接该公司的服务。我要从服务器上拿回403。。这是密码 非常感谢任何对我错误的帮助... 不确定是否重要,但服务器是一个.

  • 我不熟悉SSL和证书。我一直在做关于客户端证书认证的研究。我看过这个和wiki。 因此,如果我必须为我的B2B REST服务实现客户端证书身份验证解决方案,我应该执行以下操作 要求客户端生成自己的私钥,并为其公钥生成证书(CA 颁发?)。通过电子邮件或 USB 闪存盘发送该证书。 在服务器端将客户端的公共证书导入信任存储区并启用客户端身份验证 在握手期间,客户端会出示其证书并进行身份验证,因为服务

  • 授权服务器为进行客户端身份验证的目的,为Web应用客户端创建客户端凭据。授权服务器被鼓励考虑比客户端密码更强的客户端身份验证手段。Web应用程序客户端必须确保客户端密码和其他客户端凭据的机密性。 授权不得向本地应用程序或基于用户代理的应用客户端颁发客户端密码或其他客户端凭据用于客户端验证目的。授权服务器可以颁发客户端密码或其他凭据给专门的设备上特定安装的本地应用程序客户端。 当客户端身份验证不可用

  • 在向令牌端点发起请求时,机密客户端或其他被颁发客户端凭据的客户端必须如2.3节所述与授权服务器进行身份验证。客户端身份验证用于: 实施刷新令牌和授权码到它们被颁发给的客户端的绑定。当授权码在不安全通道上向重定向端点传输时,或者 当重定向URI没有被完全注册时,客户端身份验证是关键的。 通过禁用客户端或者改变其凭据从被入侵的客户端恢复,从而防止攻击者滥用被盗的刷新令牌。改变单套客户端凭据显然快于撤销

  • 如果客户端类型是机密的,客户端和授权服务器建立适合于授权服务器的安全性要求的客户端身份验证方法。授权服务器可以接受符合其安全要求的任何形式的客户端身份验证。 机密客户端通常颁发(或建立)一组客户端凭据用于与授权服务器进行身份验证(例如,密码、公/私钥对)。授权服务器可以与公共客户端建立客户端身份验证方法。然而,授权服务器不能依靠公共客户端身份验证达到识别客户端的目的。 客户端在每次请求中不能使用一