in pkg/sts/sts.go [413:457]
func (s *STS) constructGenerateAccessTokenRequest(fResp string, audience string) (*http.Request, error) {
gsa := "service-" + s.kr.ProjectNumber + "@gcp-sa-meshdataplane.iam.gserviceaccount.com"
if s.GSA != "" {
gsa = s.GSA
}
endpoint := ""
var err error
var jsonQuery []byte
if audience == "" || s.UseAccessToken {
endpoint = fmt.Sprintf(accessTokenEndpoint, gsa)
// Request for access token with a lifetime of 3600 seconds.
query := accessTokenRequest{
LifeTime: Duration{Seconds: 3600},
}
query.Scope = append(query.Scope, Scope)
jsonQuery, err = json.Marshal(query)
if err != nil {
return nil, fmt.Errorf("failed to marshal query for get access token request: %+v", err)
}
} else {
endpoint = fmt.Sprintf(idTokenEndpoint, gsa)
// Request for access token with a lifetime of 3600 seconds.
query := idTokenRequest{
IncludeEmail: true,
Audience: audience,
}
jsonQuery, err = json.Marshal(query)
if err != nil {
return nil, fmt.Errorf("failed to marshal query for get access token request: %+v", err)
}
}
req, err := http.NewRequest("POST", endpoint, bytes.NewBuffer(jsonQuery))
if err != nil {
return nil, fmt.Errorf("failed to create get access token request: %+v", err)
}
req.Header.Add("Content-Type", contentType)
if Debug {
reqDump, _ := httputil.DumpRequest(req, true)
log.Println("Prepared access token request: ", string(reqDump))
}
req.Header.Add("Authorization", "Bearer "+fResp) // the AccessToken
return req, nil
}