diff options
Diffstat (limited to 'server/google.ts')
| -rw-r--r-- | server/google.ts | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/server/google.ts b/server/google.ts new file mode 100644 index 0000000..3fe6362 --- /dev/null +++ b/server/google.ts @@ -0,0 +1,24 @@ +import got from "got/dist/source"; + +export const fetchIdToken = async function (aud: string): Promise<string> { + const metadataServerTokenURL = `http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=${aud}`; + + let resp; + try { + resp = await got(metadataServerTokenURL, { + headers: { + "Metadata-Flavor": "Google" + } + }); + } catch (err) { + console.error(err); + throw new Error("Failed to fetch ID token from Google metadata endpoint"); + } + + const token = resp.body; + if (!token) { + throw new Error("ID token from Google metadata endpoint is empty"); + } + + return token; +}; |
