跳转到主要内容

HTTP消息签名插件用于HTTPie

项目描述

httpie-http-message-signatures

这是HTTPie的认证插件,实现了IETF HTTP消息签名草案规范。

这是一个不兼容的替代品,不要与"Cavage" HTTP签名草案混淆。

安装

首选安装方法是使用httpie cli plugins实用工具

$ httpie cli plugins install httpie-http-message-signatures

您也可以下载此仓库并从本地源安装

$ cd httpie-http-message-signatures
$ httpie cli plugins install .

最后但同样重要的是,您也可以通过pip安装

$ pip install --upgrade httpie-http-message-signatures

使用方法

使用message-signature作为认证类型

http -A message-signature ...

HTTP消息签名草案允许使用许多参数来影响签名。由于这可能会很快变得有些令人不知所措,此插件允许以两种不同的方式传递参数

  1. -a/--auth命令行参数

    这允许以以下格式在行内传递参数

    key_id ":" key [":" covered_component_ids]
    

    换句话说,关键ID后跟一个:,然后是Base64编码的私钥字符串,可选地后跟另一个:和一个以逗号分隔的受保护组件ID列表。例如

    $ http -A message-signature -a foobar:cDf/J30Q7EtXmZZ91j4OLg== example.com
    $ http -A message-signature -a foobar:cDf/J30Q7EtXmZZ91j4OLg==:@authority,@method example.com
    
  2. ~/.httpmessagesignaturesrc文件

    如果没有通过-a/--auth传递参数,插件将查找位于主目录中的名为.httpmessagesignaturesrc的文件。该文件是一种简单的类似于INI的文件格式,其中包含不同主机的部分,每个部分都有自己的设置。可以使用[DEFAULT]部分为所有主机设置默认值。例如

    [DEFAULT]
    covered_component_ids = @method,@authority,@target-uri,content-digest
    
    [example.com]
    key_id = foobar
    key = cDf/J30Q7EtXmZZ91j4OLg==
    
    [*.example.com]
    key_id = uydnfpw0xnegmpx2op3rhw2qm
    key = nkAFfoSEN/rXWu6PrqsmntUeeSZ+aEoGD9YmxIxwjNxdlHPO4QYcSS+4aRroRHl92vEEipRCsr+j2tFVlPimfA==
    covered_component_ids = @method,@authority,@path,@query-params,content-digest
    

    主机名允许使用通配符模式。

受保护组件ID

HTTP请求的不同部分可以包含在签名中。默认情况下,这些组件包括

  • @method
  • @authority
  • @target-uri

您可以通过可选的第三个命令行参数或~/.httpmessagesignaturesrc文件中的covered_component_ids值来覆盖此默认列表。插件识别两个特殊组件ID

  1. content-digest

    当指定content-digest作为受保护组件时,且请求有一个请求体,插件将在请求中添加一个Content-Digest头并将其包含在签名中。这允许轻松地签名请求体。

  2. @query-params

    默认的@target-uri组件签名的整个URI,包括查询参数。根据您的用例,您可能需要单独签名请求路径和查询参数。对于这种情况,规范要求每个签名的查询参数作为其自己的组件单独列出。例如,对http://example.com/foo/?bar=baz&quux=42的请求将看起来像这样

    $ http -A message-signature \
           -a 'foobar:cDf/J30Q7EtXmZZ91j4OLg==:"@query-params";name="bar","@query-params";name="quux"' \
           example.com bar==baz quux==42
    

    当然,这非常不方便,因此特殊的组件ID@query-params将自动展开以包含所有传递的查询参数。因此,上述请求可以缩短为

    $ http -A message-signature -a foobar:cDf/J30Q7EtXmZZ91j4OLg==:@query-params example.com bar==baz quux==42
    

请参阅派生组件名称的完整列表,但在此仅提供不完整列表

  • @method
  • @target-uri
  • @authority
  • @scheme
  • @request-target
  • @path
  • @query
  • @query-param

实现

此插件是http-message-signatures的包装器。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

httpie_http_message_signatures-0.0.2.tar.gz (5.3 kB 查看哈希)

上传时间 源代码

构建分布

httpie_http_message_signatures-0.0.2-py3-none-any.whl (6.2 kB 查看哈希)

上传时间 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面