Skip to content

Conversation

jcshepherd
Copy link
Contributor

Factoring out assumption of a single node-wide authenticator (CASSANDRA-20834 for CEP-50)

With negotiated authentication (CEP-50), nodes may be configured with multiple authenticators. Prior to this change, a number of areas in the code assumed that there was a single configured authenticator and contained logic that switched depending on the authenticator type. This logic won't work when multiple authenticators can be configured. This change eliminates most calls to DataDescriptor.getAuthenticator(), by either directly returning whether the node can enforce authn or not, requiring dependencies to specify the type of authenticator they're looking for, or (in the case of authenticator-specific role attributes) enabling individual authenticators to declare the role attributes they need.

Testing done: Unit tests for auth and config packages; d-tests for auth-related functionality (e.g. ColumnMasks).

patch by jcshepherd; reviewed by for CASSANDRA-20834

…RA-20834)

With negotiated authentication (CEP-50), nodes may be configured with multiple authenticators. Prior to this
change, a number of areas in the code assumed that there was a single configured authenticator and contained
logic that switched depending on the authenticator type. This logic won't work when multiple authenticators
can be configured. This change eliminates most calls to DataDescriptor.getAuthenticator(), by either requiring
dependencies to specify the type of authenticator they're looking for, or (in the case of authenticator-specific
role attributes) enabling individual authenticators to declare the role attributes they need.

patch by jcshepherd; reviewed by <Reviewers> for CASSANDRA-20834

/**
* Resets the initialized flag, enabling AuthConfig to be reconfigured multiple times within a single
* test case.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Specifically, see AuthConfigTest in this same PR.


/**
* Returns the authenticator configured for this node.
*/
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the future this will become getDefaultAuthenticator(). Additional methods will be added to enable/disable negotiation and provide access to the node's supported authenticators.


/**
* Indicates if this node uses an authenticator that requires authentication.
*/
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the future, the semantics will change from "'The' authenticator requires authentication" to "Any supported authenticator requires authentication." Existing callers to this method should be unaffected by that change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant