无法在 gem-fury 中访问私有存储库

Cannot access a private repository in gem-fury

我已经通过 gem-fury 设置了一个私人作曲家存储库,但是当我尝试下载其中一个包时(使用 composer-require)我收到以下错误:

  [Composer\Downloader\TransportException]
  The 'https://s3.amazonaws.com:443/gemfury/gems/[SOME_STRING]/[VENDOR][PACKAGE]_[VERSION]_zip?Signature=SIGNATURE&Expires=1481739039&AWSAccessKeyId=[AWS_ACCESS_KEY]' URL could not be accessed: HTTP/1.1 400 Bad Request

P.S。 我知道身份验证有效,因为作曲家确实收到了 package.json 文件(识别出最新版本)

如有任何帮助,我们将不胜感激

简短回答:如果您使用 auth.json 存储您的 Gemfury 令牌,您可能会遇到此问题。目前,解决此问题的唯一方法是将令牌直接嵌入存储库 URL in composer.json.

长答案:它不起作用的原因是 Composer CLI 中的错误。在那个特定的 use-case 中,当 Composer 对 Gemfury 从您的私有 php.fury.io 存储库到安全 S3 下载的重定向执行操作时,它会包含 Authorization header 和您的 Gemfury 令牌。此 header 与 S3 的身份验证模型冲突,并导致 400 Bad Request 响应。

重新发送 Authorization header 从一台主机到另一台主机的重定向是一个相当重要的安全问题,我建议您重置 Gemfury 令牌并停止使用 auth.json 身份验证方法,直到此问题已解决。