无法进行客户端 API Redmine 身份验证

Posted

技术标签:

【中文标题】无法进行客户端 API Redmine 身份验证【英文标题】:Can't make client API Redmine authentication 【发布时间】:2022-01-18 04:16:26 【问题描述】:

我正在尝试制作 android 应用程序 - API Redmine 的客户端。首先我需要的是身份验证,但我真的不明白如何实现它。 (使用改造)文档只说:

大多数时候,API 需要身份验证。要启用 API 样式的身份验证,您必须在管理 -> 设置 -> API 中选中启用 REST API。然后,可以通过两种不同的方式进行身份验证:

    通过 HTTP 基本身份验证使用您的常规登录名/密码。 使用您的 API 密钥,这是一种避免在脚本中输入密码的便捷方法。 API 密钥

    可以通过以下方式之一附加到每个请求:

作为“关键”参数传入 通过 HTTP Basic 身份验证作为用户名和随机密码传入 作为“X-Redmine-API-Key”HTTP 标头传入(在 Redmine 1.1.0 中添加)

登录后,您可以在帐户页面 ( /my/account ) 的默认布局的右侧窗格中找到您的 API 密钥。

我找到了这个解决方案:

    HTTP 基本身份验证 – http://login:password@redmine.org/issues.xml 带有 API 令牌和登录名的 HTTP 基本身份验证 - http://login:RANDOM_KEY@redmine.org/issues.xml-(尚不支持) 带有 API 令牌的 HTTP 基本身份验证 – http://RANDOM_KEY:X@redmine.org/issues.xml 完整的令牌认证 - http://redmine.org/issues.xml?key=RANDOM_KEY

但它不起作用。 API Redmine 的所有开源客户端都使用自己的服务器/域之类的东西 - 我不明白。例子:

     - http://**my.server**/projects/test.xml?key=1234
     - http://**localhost:3000**/news.xml?key=01fc3e3832e32ae8c12bf0c3b0819ca4a5972825
     - https:**sample.redmine.com**/

我需要一些帮助来理解这是什么(粗体字)。如果没有这个,我无法提出我的请求,或者在 Retrofit 中使用 BASE_URL

【问题讨论】:

【参考方案1】:

Redmine 是一个开源软件包。因此,人们将它安装在他们自己的服务器上,这使得他们的 Redmine 安装在他们自己的主机名(可能还有子路径)上可用。

因此,在实现 Redmine 客户端时,您通常需要一种方法让客户端用户配置其 Redmine 服务器的基本 URL,例如 https://www.redmine.orghttp://server.example.com:8080/redmine

然后,您使用客户端生成的所有 API 请求都与此基本 URL 相关。但同样,每个用户的基本 URL 可能不同,需要由他们指定。

【讨论】:

非常感谢!这正是我所需要的

以上是关于无法进行客户端 API Redmine 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

无法根据访问令牌对用户进行身份验证 - MS Graph API C#

如何使用 Zapier 的 Twitter API 进行身份验证?

如何从 Lambda AWS 验证 Google API?

twitter 开发者 api oauth 提供了错误的身份验证数据,但一切都很好

使用 Postman 的服务帐户对 Google Cloud Storage JSON API 进行身份验证

与 Keycloak 身份验证插件集成时,无法从 rest 客户端调用 nuxeo rest api