-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_token.py
29 lines (20 loc) · 900 Bytes
/
generate_token.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import argparse
import urllib3
def main(receiving_service_url):
# Set up metadata server request
# See https://cloud.google.com/compute/docs/instances/verifying-instance-identity#request_signature
metadata_server_token_url = 'http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience='
token_request_url = metadata_server_token_url + receiving_service_url
token_request_headers = {'Metadata-Flavor': 'Google'}
http = urllib3.PoolManager()
token_response = http.request('GET', token_request_url, headers=token_request_headers)
# Fetch the token
if token_response.status == 200:
jwt = token_response.data.decode("utf-8")
return jwt
return None
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("audience")
args = parser.parse_args()
print(main(args.audience))