2017-03-04 3 views
0

Wie interagiere ich mit einer API, die JWT verwendet? Ich habe eine API-URL, einen Integrationsschlüssel und einen Bearer erhalten, und mir wurde gesagt, dass ich meinen Token mit "POST-Integrationsschlüssel" bekommen soll. Ich muss Daten aus dem System in unsere MS SQL-Datenbank holen, vorzugsweise mit einem SSIS-Paket.Interaktion mit einer API unter Verwendung von JWT

Ich habe eine REST-API mit curl zuvor verwendet, um zu aktualisieren und meine IP-Adresse zu erhalten, ich musste nur einen API-Schlüssel über die Website einrichten und einen Befehl wie den folgenden ausführen.

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

Ich verstehe, was JWT ein wenig, wie in es als header.payload.signature codiert ist, aber ich bin verwirrt, wie bekomme ich die Daten von dort System in Mine eines verwenden.

  • Was ist der Träger, den ich bekommen habe?
  • Muss ich meinen Integrationsschlüssel und Träger verwenden, um ein JWT von dort System zu bekommen?
  • Wird ich dann diese JWT verwenden, um mit der API zu interagieren?
  • Wird es oben so einfach wie die curl Befehl sein oder brauche ich ein Skript zu schreiben, für eine ordnungsgemäße Dokumentation unter Verwendung einer der Bibliotheken auf jwt.io

Antwort

0

Schließlich nach etwa 10 E-Mails zwischen dem Lieferanten/Entwickler fragen und er erzählte mir, dass sein System JWT benutzt, er schickte mir Screenshots davon, wie er die API mit Postman testet. Von seinen Screenshots konnte ich herausfinden, was zu tun ist, unten ist meine Powershell-Implementierung, wenn sie irgendjemanden nutzt.

#$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 
Verwandte Themen