【问题标题】:Interacting with an API using JWT使用 JWT 与 API 交互
【发布时间】:2017-07-24 10:00:27
【问题描述】:

如何使用 JWT 与 API 交互。 我得到了一个 API url、一个集成密钥和一个承载,并被告知使用“POST 集成密钥”获取我的令牌 我需要从那里的系统中获取数据并进入我们的 MS SQL 数据库,最好使用 SSIS 包。

我之前使用 curl 使用 REST API 来更新和获取我的 IP 地址,我只需要通过网站设置 API 密钥并运行如下命令。

curl -u abcdabcd-abcd-abcd-abcd-abcdabcdabcd:x -X GET https://web.site.com/api/v1/addresses.json

我有点了解 JWT 是什么,因为它被编码为 header.payload.signature,但我很困惑如何使用一个系统将数据从那里获取到我的系统中。

  • 给我的持票人是什么?
  • 我是否必须使用我的集成密钥和不记名从那里的系统获取 JWT?
  • 然后我会使用该 JWT 与那里的 API 交互吗?
  • 会像上面的 curl 命令一样简单,还是我需要使用 jwt.io 上的库之一编写脚本

【问题讨论】:

    标签: api jwt


    【解决方案1】:

    最终,在供应商/开发人员之间发送了大约 10 封电子邮件,要求提供适当的文档并告诉我他的系统使用 JWT 之后,他向我发送了他如何使用邮递员测试 API 的屏幕截图。从他的屏幕截图中,我能够弄清楚需要做什么,下面是我的 powershell 实现,如果它对任何人都有好处。

    #$fromdate = (Get-Date).AddDays(-7)  
    $fromdate = '01/01/2016'
    
    [string]$body = '{"IntegrationKey":"abcdabcd-abcd-abcd-abcd-abcdabcdabcd"}'
    
    $URI = "https://web.site.com/api/token"
    # -ProxyUseDefaultCredentials
    (New-Object System.Net.WebClient).Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
    
    [string]$jwt = Invoke-WebRequest $uri -Method post -ContentType 'application/json; charset=UTF-8' -Body $body
    
    $headers = @{"Authorization"="Bearer "+ $jwt.replace("`"","")}
    
    $uri = "https://web.site.com/api/GetData?startDate=" + $fromdate
    $response = ".\ResponseData.json"
    
    Invoke-WebRequest $uri -Method get -Headers $headers -TimeoutSec 6000 -OutFile $response
    

    【讨论】:

      猜你喜欢
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 2012-05-12
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多