1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-12-01 23:02:43 +02:00
Files
sap-jenkins-library/pkg/gcp/token.go

90 lines
3.0 KiB
Go
Raw Normal View History

feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
package gcp
import (
"context"
"fmt"
"github.com/SAP/jenkins-library/pkg/log"
"google.golang.org/api/option"
"os"
"strconv"
"time"
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
"github.com/pkg/errors"
"google.golang.org/api/sts/v1"
)
const (
gcpPubsubTokenKey = "PIPER_gcpPubsubToken"
gcpPubsubTokenExpiryKey = "PIPER_gcpPubsubTokenExpiresAt"
)
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
// getFederatedToken tries to retrieve cached token from env variables, otherwise it will exchange
// OIDC identity token to access token and cache them in env variables
func getFederatedToken(projectNumber, pool, provider, oidcToken string) (string, error) {
cachedToken := os.Getenv(gcpPubsubTokenKey)
cachedExpiresAt := os.Getenv(gcpPubsubTokenExpiryKey)
if tokenIsValid(cachedToken, cachedExpiresAt) {
log.Entry().Debug("reusing GCP PubSub access token from cache")
return cachedToken, nil
}
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
ctx := context.Background()
token, expiresAt, err := exchangeOIDCToken(ctx, projectNumber, pool, provider, oidcToken)
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
if err != nil {
return "", errors.Wrap(err, "token exchange")
}
os.Setenv(gcpPubsubTokenKey, token)
os.Setenv(gcpPubsubTokenExpiryKey, strconv.FormatInt(expiresAt, 10))
return token, nil
}
// exchangeOIDCToken exchanges OIDC identity token to access token and returns expiry time in Unix timestamp
func exchangeOIDCToken(ctx context.Context, projectNumber, pool, provider, oidcToken string) (string, int64, error) {
if len(oidcToken) == 0 {
return "", 0, errors.New("OIDC identity token is absent")
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
}
stsService, err := sts.NewService(ctx, option.WithoutAuthentication())
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
if err != nil {
return "", 0, errors.Wrap(err, "service not created")
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
}
request := getExchangeTokenRequestData(projectNumber, pool, provider, oidcToken)
response, err := sts.NewV1Service(stsService).Token(request).Context(ctx).Do()
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
if err != nil {
return "", 0, errors.Wrap(err, "exchange failed")
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
}
expiresAt := time.Now().Unix() + response.ExpiresIn
log.Entry().Debugf("token successfully exchanged and will expire at %s", time.Unix(expiresAt, 0))
return response.AccessToken, expiresAt, nil
}
func tokenIsValid(token string, expiresAtStr string) bool {
if token == "" {
return false
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
}
expiresAt, _ := strconv.Atoi(expiresAtStr)
buffer := 5 // 5 second buffer to prevent using token that potentially may expire during execution
if int64(expiresAt-buffer) < time.Now().Unix() {
return false
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
}
return true
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
}
func getExchangeTokenRequestData(projectNumber string, pool string, provider string, token string) *sts.GoogleIdentityStsV1ExchangeTokenRequest {
return &sts.GoogleIdentityStsV1ExchangeTokenRequest{
feat(events): add step to emit events to GCP (#4901) * feat(gcp): add step to send events to GCP (#4896) * add gcp token handling * add initial step * publish events * add test cases * fix test case --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * feat(gcp): Generate and validate the GCP OIDC token (#4899) * test setup for generation of jwt token * oidc token generator * push new step files * formatted code * removed toolchain and jose * removed toolchain:go 1.22.2 --------- Co-authored-by: jliempt <> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> * feat(events): add pipeline start and end event (#4900) * add gcp token handling * add initial step * publish events * add test cases * fix test case * move files * add possible values * handle start and end event * add sap events * dependencies --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> * log successful event publish * remove dummy step * prevent step from failing * improve event creation * improve event creation * simplify eventing * remove detailed events * update parameter scope * update go.sum * fix test case * add missing method * refactor OIDC part * add oidc.go to vault pkg * mock OIDC token retrieval * mock GCP functions * update OIDC function name in Vault mocks * get event data from CPE * don't encode data payload in b64 * remove vault related changes * remove vault changes from step code * remove commented out code * documentation/steps/gcpPublishEvent.md * documentation/steps/gcpPublishEvent.md * remove hardcoded eventData * update roleID * go generate * add ordering key for pubsub event --------- Co-authored-by: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Co-authored-by: D071696 <sachin.baral.ramesh@sap.com> Co-authored-by: d071696 <153099976+d071696@users.noreply.github.com> Co-authored-by: jliempt <>
2024-05-06 09:28:28 +02:00
Audience: fmt.Sprintf(
"//iam.googleapis.com/projects/%s/locations/global/workloadIdentityPools/%s/providers/%s",
projectNumber, pool, provider),
Scope: "https://www.googleapis.com/auth/cloud-platform",
SubjectToken: token,
SubjectTokenType: "urn:ietf:params:oauth:token-type:jwt",
GrantType: "urn:ietf:params:oauth:grant-type:token-exchange",
RequestedTokenType: "urn:ietf:params:oauth:token-type:access_token",
}
}