Skip to content

Instantly share code, notes, and snippets.

@dhulihan
Created September 19, 2019 20:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dhulihan/1edc53fc37ea069055f4b499c01dc698 to your computer and use it in GitHub Desktop.
Save dhulihan/1edc53fc37ea069055f4b499c01dc698 to your computer and use it in GitHub Desktop.
Convert Google Service Account Private Key (stdin) to JWT Token
package main
//
// this converts a google service account key to a jwt
//
import (
"encoding/json"
"flag"
"fmt"
"io/ioutil"
"log"
"os"
"golang.org/x/oauth2/google"
)
func main() {
b, err := ioutil.ReadAll(os.Stdin)
if err != nil {
log.Fatal(err)
}
var audience = flag.String("audience", "", "audience")
// generate token
source, err := google.JWTAccessTokenSourceFromJSON(b, *audience)
if err != nil {
log.Fatal(err)
}
token, err := source.Token()
if err != nil {
log.Fatal(err)
}
json, err := json.Marshal(token)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", json)
}
@dhulihan
Copy link
Author

dhulihan commented Sep 19, 2019

export GOOGLE_APPLICATION_CREDENTIALS=service-account.json
cat $GOOGLE_APPLICATION_CREDENTIALS | go run sajwt.go

{"access_token":"<redacted>","expiry":"2019-09-18T18:13:21.343128-06:00","token_type":"Bearer"}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment