【问题标题】:SonarQube Web API authentication in JavaJava 中的 SonarQube Web API 身份验证
【发布时间】:2020-04-04 07:08:51
【问题描述】:

我正在尝试使用 SonarQube 7.9.1 CE Web API 从 Java Spring Boot 应用程序中的服务器检索一些信息,我从一个非常简单的开始:项目列表。

事实证明,我需要通过令牌或通过用户/密码组合提供我的身份信息。但官方文档和 StackOverflow 答案仅显示 CURL 请求作为示例:

curl -u admin:admin http://localhost:9000/api/components/search_projects
curl -u 9548utj958tju5498jt934: http://localhost:9000/api/components/search_projects

我一直在尝试使用 RestTemplate 发送请求,但总是收到 401 UNAUTHORIZED 错误。

我应该如何发送用户令牌? 在请求标头中?作为请求参数的一部分?没人说。

我尝试通过 Authorization 标头使用 Bearer 9548utj958tju5498jt934Basic 9548utj958tju5498jt934,在请求中插入一个参数,但没有任何效果.

谢谢。

【问题讨论】:

  • 看看here?
  • 是的,@jeroen-heier,这正是问题所在,没有特定于语言的演示,只有一个 CURL 示例。我发现问题出在哪里:在将其编码为base64之前,需要在token的末尾添加一个冒号,然后可以将编码后的字符串作为请求头发送:encodedToken = Base64.encode((token + ": ").getBytes()); Authorization("Basic " + encryptedToken) 这是代码的近似值,我现在不记得确切的语法了。谢谢。

标签: java api sonarqube authorization token


【解决方案1】:

解决方法是在记号后面加上“:”字符。 如果你看一下文档,你会看到:

#注意curl中需要token后面的冒号设置空密码 curl -u THIS_IS_MY_TOKEN: https://sonarqube.com/api/user_tokens/search

https://docs.sonarqube.org/latest/extend/web-api/

因此,为了使其在 java 应用程序中运行,您必须执行以下操作: String tokenBase = userToken + ":"; String basicAuth = "Basic " + new String(Base64.getEncoder().encode(tokenBase.getBytes())); urlConnection.setRequestProperty("Authorization", basicAuth);

这对我有用!

【讨论】:

  • 是的,这就是解决方案。非常感谢!
猜你喜欢
  • 2016-11-13
  • 2017-10-22
  • 2014-01-28
  • 2012-06-16
  • 2016-07-03
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
相关资源
最近更新 更多