mirror of
				https://github.com/redis/go-redis.git
				synced 2025-11-04 02:33:24 +03:00 
			
		
		
		
	* wip * update documentation * add streamingcredentialsprovider in options * fix: put back option in pool creation * add package level comment * Initial re authentication implementation Introduces the StreamingCredentialsProvider as the CredentialsProvider with the highest priority. TODO: needs to be tested * Change function type name Change CancelProviderFunc to UnsubscribeFunc * add tests * fix race in tests * fix example tests * wip, hooks refactor * fix build * update README.md * update wordlist * update README.md * refactor(auth): early returns in cred listener * fix(doctest): simulate some delay * feat(conn): add close hook on conn * fix(tests): simulate start/stop in mock credentials provider * fix(auth): don't double close the conn * docs(README): mark streaming credentials provider as experimental * fix(auth): streamline auth err proccess * fix(auth): check err on close conn * chore(entraid): use the repo under redis org
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Package auth package provides authentication-related interfaces and types.
 | 
						|
// It also includes a basic implementation of credentials using username and password.
 | 
						|
package auth
 | 
						|
 | 
						|
// StreamingCredentialsProvider is an interface that defines the methods for a streaming credentials provider.
 | 
						|
// It is used to provide credentials for authentication.
 | 
						|
// The CredentialsListener is used to receive updates when the credentials change.
 | 
						|
type StreamingCredentialsProvider interface {
 | 
						|
	// Subscribe subscribes to the credentials provider for updates.
 | 
						|
	// It returns the current credentials, a cancel function to unsubscribe from the provider,
 | 
						|
	// and an error if any.
 | 
						|
	// TODO(ndyakov): Should we add context to the Subscribe method?
 | 
						|
	Subscribe(listener CredentialsListener) (Credentials, UnsubscribeFunc, error)
 | 
						|
}
 | 
						|
 | 
						|
// UnsubscribeFunc is a function that is used to cancel the subscription to the credentials provider.
 | 
						|
// It is used to unsubscribe from the provider when the credentials are no longer needed.
 | 
						|
type UnsubscribeFunc func() error
 | 
						|
 | 
						|
// CredentialsListener is an interface that defines the methods for a credentials listener.
 | 
						|
// It is used to receive updates when the credentials change.
 | 
						|
// The OnNext method is called when the credentials change.
 | 
						|
// The OnError method is called when an error occurs while requesting the credentials.
 | 
						|
type CredentialsListener interface {
 | 
						|
	OnNext(credentials Credentials)
 | 
						|
	OnError(err error)
 | 
						|
}
 | 
						|
 | 
						|
// Credentials is an interface that defines the methods for credentials.
 | 
						|
// It is used to provide the credentials for authentication.
 | 
						|
type Credentials interface {
 | 
						|
	// BasicAuth returns the username and password for basic authentication.
 | 
						|
	BasicAuth() (username string, password string)
 | 
						|
	// RawCredentials returns the raw credentials as a string.
 | 
						|
	// This can be used to extract the username and password from the raw credentials or
 | 
						|
	// additional information if present in the token.
 | 
						|
	RawCredentials() string
 | 
						|
}
 | 
						|
 | 
						|
type basicAuth struct {
 | 
						|
	username string
 | 
						|
	password string
 | 
						|
}
 | 
						|
 | 
						|
// RawCredentials returns the raw credentials as a string.
 | 
						|
func (b *basicAuth) RawCredentials() string {
 | 
						|
	return b.username + ":" + b.password
 | 
						|
}
 | 
						|
 | 
						|
// BasicAuth returns the username and password for basic authentication.
 | 
						|
func (b *basicAuth) BasicAuth() (username string, password string) {
 | 
						|
	return b.username, b.password
 | 
						|
}
 | 
						|
 | 
						|
// NewBasicCredentials creates a new Credentials object from the given username and password.
 | 
						|
func NewBasicCredentials(username, password string) Credentials {
 | 
						|
	return &basicAuth{
 | 
						|
		username: username,
 | 
						|
		password: password,
 | 
						|
	}
 | 
						|
}
 |