Skip to content

Generic Credentials Provider

Simply returns the token provided by the identity token provider and refreshes it before expiration.

Package pkg/generic. Snippets assume the common setup; Channel Behavior explains the result channel.

import (
"go.riptides.io/tokenex/pkg/generic"
"go.riptides.io/tokenex/pkg/credential"
)
// Create the Generic credentials provider
genericProvider, err := generic.NewCredentialsProvider(ctx, logger)
if err != nil {
log.Fatalf("Failed to create Generic credentials provider: %v", err)
}
// Get Generic credentials (passes through the identity token)
genericCredsChan, err := genericProvider.GetCredentials(ctx, idTokenProvider)
if err != nil {
log.Fatalf("Failed to get Generic credentials: %v", err)
}
// Process credentials from the channel in a goroutine with proper context handling
wg.Add(1)
go func() {
defer wg.Done()
for {
select {
case creds, ok := <-genericCredsChan:
if !ok {
log.Println("Generic credentials channel closed")
return
}
if creds.Err != nil {
log.Printf("Error: %v", creds.Err)
return
}
genericCreds := creds.Credential.(*credential.Oauth2Creds)
log.Printf("Token: %s", genericCreds.AccessToken)
// Use the token...
case <-ctx.Done():
log.Println("Context cancelled, shutting down Generic credentials handler")
return
}
}
}()