Emssauth plugin for httpie.
httpie-ems-auth的Python项目详细描述
这个HTTPie身份验证插件实现escher身份验证 对于emarsys api请求。
示例
如果调用套件的API,则适用
$ http --auth-type=ems-auth --auth=escher_key:escher_secret https://api.emarsys.net/api/v2/internal/12345678/settings
默认的escher凭证作用域是“eu/suite/ems_request”,用于标识套件。 如果要调用其他服务,则必须更改凭据范围,如下所示:
$ http --auth-type=ems-auth --auth=eu/suite/ems_request/escher_key:escher_secret https://api.emarsys.net/api/v2/internal/12345678/settings
如果您愿意,请查看HTTPie sessions 在请求之间保存身份验证信息。
- 如果您想在python代码中使用此示例,可以帮助:
importescherauthimportdatetimefromurlparseimporturlparseimportrequestsescher_key='test'escher_secret='test'options={'algo_prefix':'EMS','vendor_key':'EMS','hash_algo':'SHA256','auth_header_name':'X-Ems-Auth','date_header_name':'X-Ems-Date'}credential_scope="test"if"/"inescher_key:scope=escher_key.split("/")escher_key=scope.pop()credential_scope="/".join(scope)client={'api_key':escher_key,'api_secret':escher_secret}escher=escherauth.Escher(credential_scope,options)url='http://test-escher-url.com/api/call/smth'r=requests.PreparedRequest()r.prepare('GET',url)now=datetime.datetime.utcnow()r.headers['X-Ems-Date']=now.strftime('%Y%m%dT%H%M%SZ')parsed_uri=urlparse(r.url)r.headers['Host']=parsed_uri.netlocf=escher.sign(r,client)s=requests.Session()s.send(f)