【问题标题】:How do I pass credentials to Sonar API calls?如何将凭据传递给 Sonar API 调用?
【发布时间】:2014-04-10 06:00:39
【问题描述】:

当我尝试打电话时:

https://sonar.mydomain.com/api/resources?resource=com.mydomain.project:MY&metrics=ncloc&format=json

我明白了

{"err_code":401,"err_msg":"Unauthorized"}

如何传递我的凭据?

【问题讨论】:

    标签: api sonarqube


    【解决方案1】:

    据最新documentation说:SonarQube现在支持两种方式认证:

    • 用户令牌

    这是推荐的方式。 Token 是通过 HTTP 基本认证的登录字段发送的,这样会更安全,不需要任何密码。有关如何生成令牌的更多信息,请访问此页面User Token。像这样使用 curl 发送请求:

    curl -u THIS_IS_MY_TOKEN: https://sonarqube.com/api/user_tokens/search
    # note that the colon after the token is required in curl to set an empty password 
    
    • HTTP 基本访问

    登录名和密码通过标准 HTTP 基本字段发送:

    curl -u MY_LOGIN:MY_PASSWORD https://sonarqube.com/api/user_tokens/search
    

    【讨论】:

    • 这是正确答案,谢谢冒号提醒。
    • 如果我们使用令牌进行身份验证,http 标头名称是什么?
    【解决方案2】:

    根据documentationSonarQube 使用基本身份验证。试试:

    curl -u admin:SuPeRsEcReT "https://sonar.mydomain.com/api/resources?resource=com.mydomain.project:MY&metrics=ncloc&format=json"
    

    显然,传递这些凭据的机制取决于您调用 API 的方式。

    这也应该可以在网络浏览器中使用。尝试登录 Webui,您的浏览器通常会缓存凭据。

    【讨论】:

    • 谢谢,马克。你知道吗:这是基本身份验证吗?
    • 文档说明 SonarQube 使用基本身份验证
    【解决方案3】:

    发生这种情况是因为身份验证数据不包含在您的 api 调用中。这就是我解决它的方法。

    1.首先在浏览器中安装一个rest客户端“Postman”。
    2.打开它并将您的 API 调用 URL 放在“正常”选项卡下。
    3.转到“基本身份验证”选项卡并输入用户名、密码,然后单击刷新标题。
    4.返回“正常”选项卡。您会在标题列表中看到一个名为“授权”的标题。
    5.现在点击“发送”按钮查看结果。
    6.如果您使用的是第 3 方应用程序,请使用邮递员生成的值将“授权”标头添加到您的呼叫中。

    【讨论】:

    猜你喜欢
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2019-04-07
    • 2019-02-02
    • 1970-01-01
    相关资源
    最近更新 更多