【问题标题】:Confluence REST API Basic AuthenticationConfluence REST API 基本身份验证
【发布时间】:2021-08-10 12:46:58
【问题描述】:

目前我正在开发一个应该更新 Confluence 服务器页面的 Java 工具。 使用 Curl 一切都像魅力一样,但是当使用 Postman 或 Java-Code (HttpClient Java11) 时,我得到了一个

HTTP 状态 401 - 未经授权

共鸣。

使用 curl 和以下语句

curl --basic -u user:password -X PUT -H "Content-Type: application/json" -d "@test.json" https://confluence.xxx.com/confluence/rest/api/content/{pageID}

效果很好。

以下 Java 代码:

String encode = Base64.getEncoder().encodeToString((confluence_username + ":" + confluence_password).getBytes());


            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                        .uri(URI.create(endpoint))
                        .header("Authorization", "Basic " + encode)
                        .header("Content-Type", "application/json")
                        .PUT(HttpRequest.BodyPublishers.ofString(inputJson))
                        .build();
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

            System.out.println(response.statusCode());
            System.out.println(response.body());

“端点”是 Confluence 页面 URI,给出 401 响应。

而且在 Postman 中,响应始终是 401。

我重新检查了登录详细信息,它们是 100% 正确的。此外,我在运行程序/邮递员之前检查了帐户是否需要验证码刷新。

GET https://confluence.xxx.com/confluence/rest/api/content/xxx: {
  "Network": {
    "addresses": {
      "local": {
        "address": "1.2.3.4",
        "family": "IPv4",
        "port": 50668
      },
      "remote": {
        "address": "1.2.3.4",
        "family": "IPv4",
        "port": 443
      }
    },
    "tls": {
      "reused": true,
      "authorized": true,
      "authorizationError": null,
      "cipher": {
        "name": "XXXX",
        "standardName": "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
        "version": "TLSv1/SSLv3"
      },
      "protocol": "TLSv1.2",
      "ephemeralKeyInfo": {},
      "peerCertificate": {
        "subject": {
          "country": "X",
          "stateOrProvince": "X",
          "locality": "X",
          "organization": "X",
          "organizationalUnit": "X",
          "commonName": "X",
          "alternativeNames": "X, X"
        },
        "issuer": {
          "country": "X",
          "organization": "X",
          "commonName": "X"
        },
        "validFrom": "Mar  6 10:34:33 2020 GMT",
        "validTo": "Mar  6 10:44:00 2022 GMT",
        "fingerprint": "X",
        "serialNumber": "X"
      }
    }
  },
  "Request Headers": {
    "x-atlassian-token": "no-check",
    "content-type": "application/json",
    "authorization": "Basic XXX",
    "user-agent": "PostmanRuntime/7.28.3",
    "accept": "*/*",
    "postman-token": "42958f39-7fad-4e37-b2d1-657343e45403",
    "host": "confluence.XXX.com",
    "accept-encoding": "gzip, deflate, br",
    "connection": "keep-alive",
    "cookie": "JSESSIONID=1DSF345jl3h45kD82"
  },
  "Request Body": "",
  "Response Headers": {
    "date": "Wed, 11 Aug 2021 06:36:28 GMT",
    "server": "Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.2k-fips",
    "x-asen": "SEN-4272739",
    "x-seraph-loginreason": "AUTHENTICATION_DENIED",
    "www-authenticate": "OAuth realm=\"https%3A%2F%2Fconfluence.xxx.com%2Fconfluence\"",
    "content-type": "text/html;charset=utf-8",
    "content-language": "en",
    "content-length": "437",
    "keep-alive": "timeout=5, max=100",
    "connection": "Keep-Alive",
    "strict-transport-security": "max-age=31536000"
  },
  "Response Body": "<!doctype html><html lang=\"en\"><head><title>HTTP Status 401 – Unauthorized</title><style type=\"text/css\">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 401 – Unauthorized</h1></body></html>"
}

感谢您的帮助!

【问题讨论】:

  • 卷曲有效吗?您是否尝试在其他工具中对用户名:密码进行结束编码,然后与 java 或邮递员中的 encode 字符串进行比较?
  • 卷曲工作。是的,我尝试使用其他工具对登录详细信息进行编码,结果与“编码”字符串相同
  • 你能提供邮递员的控制台日志并在java中请求日志吗?我遇到的一个案例,问题是httphttps
  • 我将邮递员日志添加到问题文本中
  • 您可以尝试使用个人访问令牌confluence.atlassian.com/enterprise/…

标签: java http postman confluence confluence-rest-api


【解决方案1】:

看起来像使用邮递员发出 HTTPS 请求的问题。确保您已在邮递员中禁用 HTTPS。

Postman >> 首选项 >> SSL 证书验证关闭。

更多详情:sending certificate with HTTPS request using post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 2013-06-06
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2017-11-28
    相关资源
    最近更新 更多