Ich muss mit einer GitHub-Integrations-API interagieren, speziell mit .NET 4.0, daher kann ich Octokit nicht verwenden.Signieren Sie ein JWT-Token mit RS256 mit einem privaten PEM-Schlüssel. .NET 4.0
Grundsätzlich habe ich einen PEM
formatierten privaten RSA-Schlüssel (nicht unterstützt von Standard-.NET-API) und muss ein RS256 JWT-Token senden, um ein Authentifizierungs-Token für die Interaktion mit der API zu erhalten.
Die folgende Rubin Beispielcode wurde zur Verfügung gestellt:
# Private key contents
private_pem = File.read(path_to_pem)
private_key = OpenSSL::PKey::RSA.new(private_pem)
# Generate the JWT
payload = {
# issued at time
iat: Time.now.to_i,
# JWT expiration time
exp: 1.minute.from_now.to_i,
# Integration's GitHub identifier
iss: 42
}
jwt = JWT.encode(payload, private_key, "RS256")
Mit dem folgenden curl Beispiel
curl -i -X POST \
-H "Authorization: Bearer $JWT" \
-H "Accept: application/vnd.github.machine-man-preview+json" \
https://api.github.com/installations/:installation_id/access_tokens
Und das folgende Ergebnis Beispiel:
Status: 201 Created
{
"token": "v1.1f699f1069f60xxx",
"expires_at": "2016-07-11T22:14:10Z",
"on_behalf_of": null
}