Feature: Add MSK IAM auth plugin with token refresh #216
+1,858
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The existing MSK IAM auth functionality built in to the proxy doesn't refresh the authentication token before expiry. As such, when the authentication expires, MSK force closes the connection between the proxy and the brokers. This forces the proxy to re-establish new connections with new authentication credentials, which causes unexpected EOF errors in proxy clients before the connection is re-established.
To improve the behaviour of the proxy when working with IAM authentication against MSK clusters, this pull request introduces a new auth token provider plugin that handles IAM based SASL authentication with MSK. The new plugin supports token refresh before expiry, thereby improving the behaviour described above. https://github.com/aws/aws-msk-iam-sasl-signer-go is used to handle the actual token generation.