-
Notifications
You must be signed in to change notification settings - Fork 6.3k
fix: #23100 Change workloadidentity token cache expiry based on token expiry. #23133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
❌ Preview Environment deleted from BunnyshellAvailable commands (reply to this comment):
|
Shouldn't we just use the token's expiry? Something like this: diff --git a/util/git/creds.go b/util/git/creds.go
index 4657c4a20..9e48a3bc9 100644
--- a/util/git/creds.go
+++ b/util/git/creds.go
@@ -743,8 +743,8 @@ func (creds AzureWorkloadIdentityCreds) getAccessToken(scope string) (string, er
return "", fmt.Errorf("failed to get Azure access token: %w", err)
}
- azureTokenCache.Set(key, token, 2*time.Hour)
- return token, nil
+ azureTokenCache.Set(key, token, token.ExpiresOn.Sub(time.Now()))
+ return token.Token, nil
}
func (creds AzureWorkloadIdentityCreds) GetAzureDevOpsAccessToken() (string, error) {
diff --git a/util/workloadidentity/workloadidentity.go b/util/workloadidentity/workloadidentity.go
index 24aef2ffa..64679b02c 100644
--- a/util/workloadidentity/workloadidentity.go
+++ b/util/workloadidentity/workloadidentity.go
@@ -13,7 +13,7 @@ const (
)
type TokenProvider interface {
- GetToken(scope string) (string, error)
+ GetToken(scope string) (azcore.AccessToken, error)
}
type WorkloadIdentityTokenProvider struct {
@@ -29,17 +29,17 @@ func NewWorkloadIdentityTokenProvider() TokenProvider {
return WorkloadIdentityTokenProvider{tokenCredential: cred}
}
-func (c WorkloadIdentityTokenProvider) GetToken(scope string) (string, error) {
+func (c WorkloadIdentityTokenProvider) GetToken(scope string) (azcore.AccessToken, error) {
if initError != nil {
- return "", initError
+ return azcore.AccessToken{}, initError
}
token, err := c.tokenCredential.GetToken(context.Background(), policy.TokenRequestOptions{
Scopes: []string{scope},
})
if err != nil {
- return "", err
+ return azcore.AccessToken{}, err
}
- return token.Token, nil
+ return token, nil
} |
Makes sense, I will update he PR |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #23133 +/- ##
==========================================
+ Coverage 60.01% 60.08% +0.06%
==========================================
Files 342 342
Lines 57845 57872 +27
==========================================
+ Hits 34718 34771 +53
+ Misses 20352 20331 -21
+ Partials 2775 2770 -5 ☔ View full report in Codecov by Sentry. |
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
Worth adding a unit test? |
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
Yes I am working on unit tests for same. |
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
@crenshaw-dev @agaudreault The PR is ready for review, Please review the same. |
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
/cherry-pick release-3.0 |
Cherry-pick failed with |
…on token expiry. (argoproj#23133) Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com>
…on token expiry. (argoproj#23133) Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com> Signed-off-by: Alexandre Gaudreault <alexandre_gaudreault@intuit.com>
…on token expiry. (argoproj#23133) Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com> Signed-off-by: dsuhinin <suhinin.dmitriy@gmail.com>
…on token expiry. (argoproj#23133) Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com> Signed-off-by: dsuhinin <suhinin.dmitriy@gmail.com>
…on token expiry. (argoproj#23133) Signed-off-by: Jagpreet Singh Tamber <jagpreetstamber@gmail.com> Signed-off-by: enneitex <etienne.divet@gmail.com>
Different Microsoft Entra tenants can enforce different lifetimes for managed identity tokens, default is 3 hours, using which earlier cache expiry was set. Lowering it to 30 minutes to avoid any issues with Entra tenants setting the token expiry to 1 hour.
Closes #23100
Checklist: