55 "crypto/tls"
66 "net"
77 "time"
8+
9+ "github.com/redis/go-redis/v9/auth"
810)
911
1012// UniversalOptions information is required by UniversalClient to establish
@@ -26,11 +28,27 @@ type UniversalOptions struct {
2628 Dialer func (ctx context.Context , network , addr string ) (net.Conn , error )
2729 OnConnect func (ctx context.Context , cn * Conn ) error
2830
29- Protocol int
30- Username string
31- Password string
31+ Protocol int
32+ Username string
33+ Password string
34+ // CredentialsProvider allows the username and password to be updated
35+ // before reconnecting. It should return the current username and password.
3236 CredentialsProvider func () (username string , password string )
3337
38+ // CredentialsProviderContext is an enhanced parameter of CredentialsProvider,
39+ // done to maintain API compatibility. In the future,
40+ // there might be a merge between CredentialsProviderContext and CredentialsProvider.
41+ // There will be a conflict between them; if CredentialsProviderContext exists, we will ignore CredentialsProvider.
42+ CredentialsProviderContext func (ctx context.Context ) (username string , password string , err error )
43+
44+ // StreamingCredentialsProvider is used to retrieve the credentials
45+ // for the connection from an external source. Those credentials may change
46+ // during the connection lifetime. This is useful for managed identity
47+ // scenarios where the credentials are retrieved from an external source.
48+ //
49+ // Currently, this is a placeholder for the future implementation.
50+ StreamingCredentialsProvider auth.StreamingCredentialsProvider
51+
3452 SentinelUsername string
3553 SentinelPassword string
3654
@@ -98,10 +116,12 @@ func (o *UniversalOptions) Cluster() *ClusterOptions {
98116 Dialer : o .Dialer ,
99117 OnConnect : o .OnConnect ,
100118
101- Protocol : o .Protocol ,
102- Username : o .Username ,
103- Password : o .Password ,
104- CredentialsProvider : o .CredentialsProvider ,
119+ Protocol : o .Protocol ,
120+ Username : o .Username ,
121+ Password : o .Password ,
122+ CredentialsProvider : o .CredentialsProvider ,
123+ CredentialsProviderContext : o .CredentialsProviderContext ,
124+ StreamingCredentialsProvider : o .StreamingCredentialsProvider ,
105125
106126 MaxRedirects : o .MaxRedirects ,
107127 ReadOnly : o .ReadOnly ,
@@ -150,11 +170,13 @@ func (o *UniversalOptions) Failover() *FailoverOptions {
150170 Dialer : o .Dialer ,
151171 OnConnect : o .OnConnect ,
152172
153- DB : o .DB ,
154- Protocol : o .Protocol ,
155- Username : o .Username ,
156- Password : o .Password ,
157- CredentialsProvider : o .CredentialsProvider ,
173+ DB : o .DB ,
174+ Protocol : o .Protocol ,
175+ Username : o .Username ,
176+ Password : o .Password ,
177+ CredentialsProvider : o .CredentialsProvider ,
178+ CredentialsProviderContext : o .CredentialsProviderContext ,
179+ StreamingCredentialsProvider : o .StreamingCredentialsProvider ,
158180
159181 SentinelUsername : o .SentinelUsername ,
160182 SentinelPassword : o .SentinelPassword ,
@@ -204,11 +226,13 @@ func (o *UniversalOptions) Simple() *Options {
204226 Dialer : o .Dialer ,
205227 OnConnect : o .OnConnect ,
206228
207- DB : o .DB ,
208- Protocol : o .Protocol ,
209- Username : o .Username ,
210- Password : o .Password ,
211- CredentialsProvider : o .CredentialsProvider ,
229+ DB : o .DB ,
230+ Protocol : o .Protocol ,
231+ Username : o .Username ,
232+ Password : o .Password ,
233+ CredentialsProvider : o .CredentialsProvider ,
234+ CredentialsProviderContext : o .CredentialsProviderContext ,
235+ StreamingCredentialsProvider : o .StreamingCredentialsProvider ,
212236
213237 MaxRetries : o .MaxRetries ,
214238 MinRetryBackoff : o .MinRetryBackoff ,
0 commit comments