Skip to content

Commit

Permalink
Log if we see an unexpected authenticator but still return SASL as th…
Browse files Browse the repository at this point in the history
…e default
  • Loading branch information
absurdfarce committed Jan 22, 2024
1 parent 96d23e4 commit ec21a02
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
19 changes: 12 additions & 7 deletions proxycore/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ package proxycore
import (
"bytes"
"fmt"

"go.uber.org/zap"
)

type Authenticator interface {
InitialResponse(authenticator string) ([]byte, error)
InitialResponse(authenticator string, c *ClientConn) ([]byte, error)
EvaluateChallenge(token []byte) ([]byte, error)
Success(token []byte) error
}
Expand All @@ -35,14 +37,17 @@ const dseAuthenticator = "com.datastax.bdp.cassandra.auth.DseAuthenticator"
const passwordAuthenticator = "org.apache.cassandra.auth.PasswordAuthenticator"
const astraAuthenticator = "org.apache.cassandra.auth.AstraAuthenticator"

func (d *passwordAuth) InitialResponse(authenticator string) ([]byte, error) {
switch authenticator {
case dseAuthenticator:
func (d *passwordAuth) InitialResponse(authenticator string, c *ClientConn) ([]byte, error) {
if authenticator == dseAuthenticator {
return []byte("PLAIN"), nil
case passwordAuthenticator, astraAuthenticator:
return d.makeToken(), nil
}
return nil, fmt.Errorf("unknown authenticator: %v", authenticator)
// We'll return a SASL response but if we're seeing an authenticator we're unfamiliar with at least log
// that information here
if (authenticator != passwordAuthenticator) && (authenticator != astraAuthenticator) {
c.logger.Info("observed unknown authenticator, treating as SASL",
zap.String("authenticator", authenticator))
}
return d.makeToken(), nil
}

func (d *passwordAuth) EvaluateChallenge(token []byte) ([]byte, error) {
Expand Down
2 changes: 1 addition & 1 deletion proxycore/clientconn.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ func (c *ClientConn) registerForEvents(ctx context.Context, version primitive.Pr
}

func (c *ClientConn) authInitialResponse(ctx context.Context, version primitive.ProtocolVersion, auth Authenticator, authenticate *message.Authenticate) error {
token, err := auth.InitialResponse(authenticate.Authenticator)
token, err := auth.InitialResponse(authenticate.Authenticator, c)
if err != nil {
return err
}
Expand Down

0 comments on commit ec21a02

Please sign in to comment.