Warum erhalte ich eine 401 von der Coinbase Advanced API mit ES256 JWT, selbst mit einem gültigen JSON-Schlüssel und gülPython

Python-Programme
Anonymous
 Warum erhalte ich eine 401 von der Coinbase Advanced API mit ES256 JWT, selbst mit einem gültigen JSON-Schlüssel und gül

Post by Anonymous »

Ich versuche, mich mit einem ES256-signierten JWT bei der Coinbase Advanced API zu authentifizieren, erhalte aber immer wieder eine 401-Antwort von jedem Endpunkt.
Ich verwende einen JSON-API-Schlüssel, der in der Coinbase Developer Platform (CDP) erstellt wurde, und ich habe bestätigt, dass:
  • Der Schlüssel über die richtigen Berechtigungen verfügt
  • Das Kind im JWT-Header stimmt mit überein API-Schlüssel-ID
  • Der sub-Anspruch entspricht dem Schlüsselnamen (organizations/.../apiKeys/...)
  • Das Token ist mit ES256 signiert
  • Der aud ist auf https://api.coinbase.com gesetzt
  • Die nbf- und exp-Ansprüche befinden sich im richtigen Fenster
  • Das HTTP Die Anfrage enthält das JWT im Authorization: Bearer -Header
Ich habe auch überprüft, dass ich für jede Anfrage ein neues JWT generiere, aber die Antwort lautet immer:

Code: Select all

401 Unauthorized
{"error":"invalid_token"}
Hier ist ein vereinfachtes Beispiel dafür, wie ich das JWT erzeuge:

Code: Select all

import jwt
import json
import time
from pathlib import Path
from cryptography.hazmat.primitives import serialization

# Load JSON API key (Coinbase CDP key)
with open("cdp_api_key.json", "r") as f:
key_data = json.load(f)

# Load EC private key
with open("private_key.pem", "r") as f:
private_key = serialization.load_pem_private_key(
f.read().encode(),
password=None,
)

now = int(time.time())

# JWT payload
payload = {
"sub": key_data["name"],
"iss": key_data["name"],
"nbf": now,
"exp": now + 120,
"aud": "https://api.coinbase.com",
}

# Generate ES256-signed JWT
token = jwt.encode(
payload,
private_key,
algorithm="ES256",
headers={"kid": key_data["id"]},
)

print(token)
Trotzdem gibt die Anfrage immer noch 401 zurück.
Frage:

Gibt es eine zusätzliche Anforderung für den ES256-JWT-Flow (CDP-JSON-Schlüssel) von Coinbase, die nicht dokumentiert ist, oder etwas Kleines, das mir fehlt?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post