泽西岛客户端:詹金斯重定向时身份验证失败

泰勒先生

我正在尝试使用Jenkins的REST API。Jenkins要求对URL进行POST请求才能删除作业。结果如下:

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

这对Po​​stman来说很好用(当然,除非我禁用“自动跟随重定向”)。但是,Jersey在第5步一直遇到“ 404”,因为我阻止了匿名用户查看该文件夹。(如果我完全阻止了匿名用户,则为“ 403”。)请注意,身份验证在步骤1中有效,因为作业已成功删除!

我的印象是,Jersey应该对所有与客户端有关的请求使用给定的身份验证。有没有一种方法可以真正实现这一目标?我真的不想仅仅为了自己做每个重定向而禁止重定向。

需要说明的问题是:Jersey遵循重定向,但无法再次进行身份验证,导致服务器拒绝了第二个请求。

有问题的代码:

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);

编辑:根据邮递员,“找到的302”只有5个标头:日期,X内容类型选项(“ nosniff”),位置,内容长度(0)和服务器。因此,Postman可能会使用的任何cookie或令牌都不会被Jersey忽略。

这个问题松散相关的问题-如果我能够记录第二个请求,则我也许能够了解幕后发生的事情。

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

泰勒先生

我在Paul SamsothaGautham的帮助下找到了答案

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


由于还描述了这里HttpURLConnection决定不执行,因为它是在HTTP标准中定义的,而是尽可能多的浏览器中实现它(所以在深入浅出而言,“做这样每个人,而不是它是如何工作的其他人”)重定向。这导致以下行为:

  1. 发送POST到URL_1。
  2. 服务器回答为“ 302-找到”,并包含URL_2。
  3. 将GET发送到URL_2,并删除所有标头
  4. 服务器回答为“ 404-Not Found”,因为第二个请求不包含正确的身份验证标头。
  5. “ 404”响应是代码收到的响应,因为步骤2和3被基础代码“隐藏”。

通过删除所有标头,身份验证将失败。由于Jersey默认情况下使用此类,因此导致我遇到的行为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

泽西岛的客户身份验证

来自分类Dev

致命:[GIT客户端]身份验证失败

来自分类Dev

贝宝客户端身份验证失败

来自分类Dev

如何设置詹金斯身份验证令牌?

来自分类Dev

如何禁用詹金斯的基本HTTP身份验证

来自分类Dev

詹金斯的Nexus Break SVN插件身份验证

来自分类Dev

泽西岛客户端创建错误

来自分类Dev

泽西岛图像上传客户端

来自分类Dev

奇怪的.net MVC表单身份验证,当客户端请求css / js文件时,它将重定向到登录

来自分类Dev

客户端的客户端密码验证失败,身份验证代码流上的客户端密码无效

来自分类Dev

Sharepoint客户端身份验证

来自分类Dev

Laravel身份验证重定向失败

来自分类Dev

身份验证重定向失败

来自分类Dev

验证身份后如何将客户端重定向到网站?

来自分类Dev

NoSuchMethodError:泽西岛客户端中的MultivaluedMap.addAll

来自分类Dev

泽西岛客户端获取错误消息正文

来自分类Dev

泽西岛客户端:hk2 UnsatisfiedDependencyException

来自分类Dev

泽西岛2分段上传客户端

来自分类Dev

泽西岛客户端响应字符串编码

来自分类Dev

泽西岛客户端-变量类型将被忽略

来自分类Dev

Swagger基本身份验证在php客户端中失败

来自分类Dev

Azure移动服务Facebook身份验证android客户端失败

来自分类Dev

postfix:Milter 收到客户端身份验证失败的通知?

来自分类Dev

泽西岛安全摘要vs基本身份验证

来自分类Dev

客户端模式下的OpenSSL:验证身份验证

来自分类Dev

詹金斯。Git客户端插件[我无法下载]

来自分类Dev

詹金斯(Jenkins)。Git客户端插件[我无法下载]

来自分类Dev

如何在詹金斯上设置身份验证

来自分类Dev

客户端使用OpenPop进行身份验证时,密码是否需要编码?

Related 相关文章

热门标签

归档