Skip to content

Commit 33a523d

Browse files
committed
wip(examples): rename examples and add shorter expirations
1 parent c3cd920 commit 33a523d

File tree

10 files changed

+185
-3
lines changed

10 files changed

+185
-3
lines changed

examples/entraid/clientcert/main.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ import (
99
"fmt"
1010
"log"
1111
"os"
12+
"time"
1213

1314
"config"
1415

1516
entraid "github.com/redis/go-redis-entraid"
1617
"github.com/redis/go-redis-entraid/identity"
18+
"github.com/redis/go-redis-entraid/manager"
1719
"github.com/redis/go-redis/v9"
1820
)
1921

@@ -28,6 +30,12 @@ func main() {
2830

2931
// Create a confidential identity credentials provider with certificate authentication
3032
cp, err := entraid.NewConfidentialCredentialsProvider(entraid.ConfidentialCredentialsProviderOptions{
33+
CredentialsProviderOptions: entraid.CredentialsProviderOptions{
34+
TokenManagerOptions: manager.TokenManagerOptions{
35+
ExpirationRefreshRatio: 0.001, // Set to refresh very early
36+
LowerRefreshBound: time.Second * 1, // Set lower bound to 1 second
37+
},
38+
},
3139
ConfidentialIdentityProviderOptions: identity.ConfidentialIdentityProviderOptions{
3240
ClientID: cfg.AzureClientID,
3341
ClientSecret: cfg.AzureClientSecret,
@@ -102,6 +110,35 @@ func main() {
102110
log.Fatalf("Failed to get test key from cluster: %v", err)
103111
}
104112
fmt.Printf("Retrieved value from cluster: %s\n", clusterVal)
113+
114+
// Wait for token to expire
115+
fmt.Println("Waiting for token to expire...")
116+
time.Sleep(3 * time.Second)
117+
118+
// Test token refresh by retrying operations
119+
fmt.Println("Testing token refresh...")
120+
121+
// Retry standalone operations
122+
for i := 0; i < 3; i++ {
123+
pong, err = redisClient.Ping(ctx).Result()
124+
if err != nil {
125+
log.Printf("Failed to ping Redis (attempt %d): %v", i+1, err)
126+
continue
127+
}
128+
fmt.Printf("Successfully pinged Redis standalone after token refresh: %s\n", pong)
129+
break
130+
}
131+
132+
// Retry cluster operations
133+
for i := 0; i < 3; i++ {
134+
clusterPong, err = clusterClient.Ping(ctx).Result()
135+
if err != nil {
136+
log.Printf("Failed to ping Redis cluster (attempt %d): %v", i+1, err)
137+
continue
138+
}
139+
fmt.Printf("Successfully pinged Redis cluster after token refresh: %s\n", clusterPong)
140+
break
141+
}
105142
}
106143

107144
func decodeBase64Pem(pemData string) string {

examples/entraid/clientsecret/main.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import (
55
"fmt"
66
"log"
77
"os"
8+
"time"
89

910
"config"
1011

1112
entraid "github.com/redis/go-redis-entraid"
1213
"github.com/redis/go-redis-entraid/identity"
14+
"github.com/redis/go-redis-entraid/manager"
1315
"github.com/redis/go-redis/v9"
1416
)
1517

@@ -25,6 +27,12 @@ func main() {
2527
// Create a confidential identity credentials provider
2628
// This example uses client secret authentication
2729
cp, err := entraid.NewConfidentialCredentialsProvider(entraid.ConfidentialCredentialsProviderOptions{
30+
CredentialsProviderOptions: entraid.CredentialsProviderOptions{
31+
TokenManagerOptions: manager.TokenManagerOptions{
32+
ExpirationRefreshRatio: 0.001, // Set to refresh very early
33+
LowerRefreshBound: time.Second * 1, // Set lower bound to 1 second
34+
},
35+
},
2836
ConfidentialIdentityProviderOptions: identity.ConfidentialIdentityProviderOptions{
2937
ClientID: cfg.AzureClientID,
3038
ClientSecret: cfg.AzureClientSecret,
@@ -97,4 +105,33 @@ func main() {
97105
log.Fatalf("Failed to get test key from cluster: %v", err)
98106
}
99107
fmt.Printf("Retrieved value from cluster: %s\n", clusterVal)
108+
109+
// Wait for token to expire
110+
fmt.Println("Waiting for token to expire...")
111+
time.Sleep(3 * time.Second)
112+
113+
// Test token refresh by retrying operations
114+
fmt.Println("Testing token refresh...")
115+
116+
// Retry standalone operations
117+
for i := 0; i < 3; i++ {
118+
pong, err = redisClient.Ping(ctx).Result()
119+
if err != nil {
120+
log.Printf("Failed to ping Redis (attempt %d): %v", i+1, err)
121+
continue
122+
}
123+
fmt.Printf("Successfully pinged Redis standalone after token refresh: %s\n", pong)
124+
break
125+
}
126+
127+
// Retry cluster operations
128+
for i := 0; i < 3; i++ {
129+
clusterPong, err = clusterClient.Ping(ctx).Result()
130+
if err != nil {
131+
log.Printf("Failed to ping Redis cluster (attempt %d): %v", i+1, err)
132+
continue
133+
}
134+
fmt.Printf("Successfully pinged Redis cluster after token refresh: %s\n", clusterPong)
135+
break
136+
}
100137
}

examples/entraid/defaultcredentials/main.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import (
55
"fmt"
66
"log"
77
"os"
8+
"time"
89

910
"config"
1011

1112
entraid "github.com/redis/go-redis-entraid"
1213
"github.com/redis/go-redis-entraid/identity"
14+
"github.com/redis/go-redis-entraid/manager"
1315
"github.com/redis/go-redis/v9"
1416
)
1517

@@ -29,6 +31,12 @@ func main() {
2931
// 3. Azure CLI credentials
3032
// 4. Visual Studio Code credentials
3133
cp, err := entraid.NewDefaultAzureCredentialsProvider(entraid.DefaultAzureCredentialsProviderOptions{
34+
CredentialsProviderOptions: entraid.CredentialsProviderOptions{
35+
TokenManagerOptions: manager.TokenManagerOptions{
36+
ExpirationRefreshRatio: 0.001, // Set to refresh very early
37+
LowerRefreshBound: time.Second * 1, // Set lower bound to 1 second
38+
},
39+
},
3240
DefaultAzureIdentityProviderOptions: identity.DefaultAzureIdentityProviderOptions{
3341
Scopes: []string{"https://redis.azure.com/.default"},
3442
},
@@ -93,4 +101,33 @@ func main() {
93101
log.Fatalf("Failed to get test key from cluster: %v", err)
94102
}
95103
fmt.Printf("Retrieved value from cluster: %s\n", clusterVal)
104+
105+
// Wait for token to expire
106+
fmt.Println("Waiting for token to expire...")
107+
time.Sleep(3 * time.Second)
108+
109+
// Test token refresh by retrying operations
110+
fmt.Println("Testing token refresh...")
111+
112+
// Retry standalone operations
113+
for i := 0; i < 3; i++ {
114+
pong, err = redisClient.Ping(ctx).Result()
115+
if err != nil {
116+
log.Printf("Failed to ping Redis (attempt %d): %v", i+1, err)
117+
continue
118+
}
119+
fmt.Printf("Successfully pinged Redis standalone after token refresh: %s\n", pong)
120+
break
121+
}
122+
123+
// Retry cluster operations
124+
for i := 0; i < 3; i++ {
125+
clusterPong, err = clusterClient.Ping(ctx).Result()
126+
if err != nil {
127+
log.Printf("Failed to ping Redis cluster (attempt %d): %v", i+1, err)
128+
continue
129+
}
130+
fmt.Printf("Successfully pinged Redis cluster after token refresh: %s\n", clusterPong)
131+
break
132+
}
96133
}

examples/entraid/managedidentity_user/go.mod renamed to examples/entraid/managedidentity_systemassigned/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module managedidentity_user
1+
module managedidentity_systemassigned
22

33
go 1.23.4
44

examples/entraid/managedidentity_system/main.go renamed to examples/entraid/managedidentity_systemassigned/main.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import (
55
"fmt"
66
"log"
77
"os"
8+
"time"
89

910
"config"
1011

1112
entraid "github.com/redis/go-redis-entraid"
1213
"github.com/redis/go-redis-entraid/identity"
14+
"github.com/redis/go-redis-entraid/manager"
1315
"github.com/redis/go-redis/v9"
1416
)
1517

@@ -24,6 +26,12 @@ func main() {
2426

2527
// Create a managed identity credentials provider for system-assigned identity
2628
cp, err := entraid.NewManagedIdentityCredentialsProvider(entraid.ManagedIdentityCredentialsProviderOptions{
29+
CredentialsProviderOptions: entraid.CredentialsProviderOptions{
30+
TokenManagerOptions: manager.TokenManagerOptions{
31+
ExpirationRefreshRatio: 0.001, // Set to refresh very early
32+
LowerRefreshBound: time.Second * 1, // Set lower bound to 1 second
33+
},
34+
},
2735
ManagedIdentityProviderOptions: identity.ManagedIdentityProviderOptions{
2836
// For system-assigned identity, we don't need to specify ClientID
2937
Scopes: cfg.GetRedisScopes(),
@@ -91,4 +99,33 @@ func main() {
9199
log.Fatalf("Failed to get test key from cluster: %v", err)
92100
}
93101
fmt.Printf("Retrieved value from cluster: %s\n", clusterVal)
102+
103+
// Wait for token to expire
104+
fmt.Println("Waiting for token to expire...")
105+
time.Sleep(3 * time.Second)
106+
107+
// Test token refresh by retrying operations
108+
fmt.Println("Testing token refresh...")
109+
110+
// Retry standalone operations
111+
for i := 0; i < 3; i++ {
112+
pong, err = redisClient.Ping(ctx).Result()
113+
if err != nil {
114+
log.Printf("Failed to ping Redis (attempt %d): %v", i+1, err)
115+
continue
116+
}
117+
fmt.Printf("Successfully pinged Redis standalone after token refresh: %s\n", pong)
118+
break
119+
}
120+
121+
// Retry cluster operations
122+
for i := 0; i < 3; i++ {
123+
clusterPong, err = clusterClient.Ping(ctx).Result()
124+
if err != nil {
125+
log.Printf("Failed to ping Redis cluster (attempt %d): %v", i+1, err)
126+
continue
127+
}
128+
fmt.Printf("Successfully pinged Redis cluster after token refresh: %s\n", clusterPong)
129+
break
130+
}
94131
}

examples/entraid/managedidentity_system/go.mod renamed to examples/entraid/managedidentity_userassigned/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module managedidentity_system
1+
module managedidentity_userassigned
22

33
go 1.23.4
44

examples/entraid/managedidentity_user/main.go renamed to examples/entraid/managedidentity_userassigned/main.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import (
55
"fmt"
66
"log"
77
"os"
8+
"time"
89

910
"config"
1011

1112
entraid "github.com/redis/go-redis-entraid"
1213
"github.com/redis/go-redis-entraid/identity"
14+
"github.com/redis/go-redis-entraid/manager"
1315
"github.com/redis/go-redis/v9"
1416
)
1517

@@ -26,6 +28,10 @@ func main() {
2628
cp, err := entraid.NewManagedIdentityCredentialsProvider(entraid.ManagedIdentityCredentialsProviderOptions{
2729
CredentialsProviderOptions: entraid.CredentialsProviderOptions{
2830
ClientID: cfg.AzureClientID,
31+
TokenManagerOptions: manager.TokenManagerOptions{
32+
ExpirationRefreshRatio: 0.001, // Set to refresh very early
33+
LowerRefreshBound: time.Second * 1, // Set lower bound to 1 second
34+
},
2935
},
3036
ManagedIdentityProviderOptions: identity.ManagedIdentityProviderOptions{
3137
ManagedIdentityType: identity.UserAssignedObjectID,
@@ -94,4 +100,33 @@ func main() {
94100
log.Fatalf("Failed to get test key from cluster: %v", err)
95101
}
96102
fmt.Printf("Retrieved value from cluster: %s\n", clusterVal)
103+
104+
// Wait for token to expire
105+
fmt.Println("Waiting for token to expire...")
106+
time.Sleep(3 * time.Second)
107+
108+
// Test token refresh by retrying operations
109+
fmt.Println("Testing token refresh...")
110+
111+
// Retry standalone operations
112+
for i := 0; i < 3; i++ {
113+
pong, err = redisClient.Ping(ctx).Result()
114+
if err != nil {
115+
log.Printf("Failed to ping Redis (attempt %d): %v", i+1, err)
116+
continue
117+
}
118+
fmt.Printf("Successfully pinged Redis standalone after token refresh: %s\n", pong)
119+
break
120+
}
121+
122+
// Retry cluster operations
123+
for i := 0; i < 3; i++ {
124+
clusterPong, err = clusterClient.Ping(ctx).Result()
125+
if err != nil {
126+
log.Printf("Failed to ping Redis cluster (attempt %d): %v", i+1, err)
127+
continue
128+
}
129+
fmt.Printf("Successfully pinged Redis cluster after token refresh: %s\n", clusterPong)
130+
break
131+
}
97132
}

identity/providers.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ const (
88
// UserAssignedObjectID is the type of identity that is managed by the user.
99
UserAssignedObjectID = "UserAssignedObjectID"
1010

11-
1211
// ClientSecretCredentialType is the type of credentials that uses a client secret to authenticate.
1312
ClientSecretCredentialType = "ClientSecret"
1413
// ClientCertificateCredentialType is the type of credentials that uses a client certificate to authenticate.

0 commit comments

Comments
 (0)