rest - 预验证对 Team City 8.0 REST API 的 Powershell WebClient 请求

标签 rest authentication powershell webclient teamcity-8.0

我正在尝试在 Team City 构建步骤中运行 Powershell 脚本。

脚本使用 WebClient 连接到 Team City 的 REST API;目前,我必须登录 Team City 并将用户名和密码硬编码为 Powershell 构建步骤中的参数。

我想知道是否有人知道如何在我的 Powershell 脚本中传递我当前用于向 Team City 进行身份验证的凭据,而无需对任何密码进行硬编码

最佳答案

如果您只需要 REST api 中的读取访问权限(即您不想执行 POST/PUT/DELETE,只需 GET),则使用 teamcity 生成的用户名和密码。

此用户名/密码对是在每次构建时生成的,并且仅在构建运行期间有效。您可以通过以下方式在 powershell 脚本中访问它们:

  • 读取 $env:TEAMCITY_BUILD_PROPERTIES_FILE 环境变量,该变量保存为此构建生成/有效的构建属性文件的完整路径

  • 这个文件是一个简单的 key=value java prop 文件。您需要解析 teamcity.auth.userId 和 teamcity.auth.password 属性的值。或者更好的是,始终在脚本初始化阶段解析所有 props 并将它们放入 powershell 脚本中的哈希表中。

如果您需要对 REST api 进行写访问,则不能使用此 uid/pwd 对。为此,我在 osx 上使用钥匙串(keychain),在 Windows 上使用 keepass 数据库。 Keepass 有一个很好的 .net api,您可以从 powershell 访问它。创建一个新的 keepass 数据库,使其可使用 key 解锁,而不是使用密码,确保运行构建代理的用户有权访问此 key 而没有其他人,然后使用 keepass api 解锁数据库,读出您的 teamcity 管理员可以在其余API中执行POST/PUT/DELETE的帐户和密码。

关于rest - 预验证对 Team City 8.0 REST API 的 Powershell WebClient 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383220/

相关文章:

angularjs - Angular2 中加载 AppComponent 之前的用户身份验证

powershell - Start-Job with credential in 自定义任务问题

java - 无效输入请求的 REST 服务异常

java - Android - 选择 HTTP Java 库

authentication - 具有 C++ 用户名/密码身份验证的 Thrift sasl

mysql - 将 CSV 导入到本地主机时出现错误

powershell - Import-Module 仅在从 Get-Module 进行管道传输时才有效

java - 如何使用 Unirest 将数据从 Vaadin 发布到 Vertx?

C# - 以字节 block 的形式从 Google Drive 下载

php - 如何在使用 Zend_Auth 进行身份验证后重定向到请求的 URI?