Skip to content

Commit 642768b

Browse files
authored
Delete Deprecated clientSaslAuthenticationSuccess from FilterContext (kroxylicious#3623)
* remove the deprecate code Signed-off-by: m1a2st <s7133700@gmail.com> * add the pom exclude Signed-off-by: m1a2st <s7133700@gmail.com> * fix linter Signed-off-by: m1a2st <s7133700@gmail.com> * addressed by comment Signed-off-by: m1a2st <s7133700@gmail.com> --------- Signed-off-by: m1a2st <s7133700@gmail.com>
1 parent 1147699 commit 642768b

17 files changed

Lines changed: 25 additions & 119 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,16 @@ Format `<github issue/pr number>: <short description>`.
77

88
## SNAPSHOT
99

10+
* [#3620](https://github.com/kroxylicious/kroxylicious/issues/3620): Removed Deprecated clientSaslAuthenticationSuccess from FilterContext
1011
* [#3624](https://github.com/kroxylicious/kroxylicious/pull/3624): feat(operator): set Kubernetes client User-Agent to `kroxylicious-operator/<version>` for API server audit log identification
1112
* [#3565](https://github.com/kroxylicious/kroxylicious/pull/3514): build(deps): bump kubernetes-client.version from 7.5.2 to 7.6.1
1213
* [#3514](https://github.com/kroxylicious/kroxylicious/pull/3514): build(deps): build(deps-dev): bump org.yaml:snakeyaml from 2.5 to 2.6
1314
* [#3564](https://github.com/kroxylicious/kroxylicious/pull/3564): build(deps): bump apicurio-registry.version from 3.1.6 to 3.2.1
1415

16+
### Changes, deprecations and removals
17+
18+
* The deprecated method `FilterContext#clientSaslAuthenticationSuccess(String, String)` is removed. Filter authors must use `FilterContext#clientSaslAuthenticationSuccess(String, Subject)` to announce a successful SASL authentication to the other filters in the chain.
19+
1520
## 0.20.0
1621

1722
* [#3570](https://github.com/kroxylicious/kroxylicious/pull/3570): build(deps): bump netty.version from 4.2.10.Final to 4.2.12.Final

kroxylicious-api/pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@
169169
<!-- The following methods become deprecated and are given a default implementation at 0.19.0 which throws UnsupportedOperationException -->
170170
<exclude>io.kroxylicious.proxy.filter.RequestFilter#onRequest(org.apache.kafka.common.protocol.ApiKeys, org.apache.kafka.common.message.RequestHeaderData, org.apache.kafka.common.protocol.ApiMessage, io.kroxylicious.proxy.filter.FilterContext)</exclude>
171171
<exclude>io.kroxylicious.proxy.filter.ResponseFilter#onResponse(org.apache.kafka.common.protocol.ApiKeys, org.apache.kafka.common.message.ResponseHeaderData, org.apache.kafka.common.protocol.ApiMessage, io.kroxylicious.proxy.filter.FilterContext)</exclude>
172+
<!-- The following method was deprecated since 0.18 and removed at 0.21.0, see https://github.com/kroxylicious/kroxylicious/issues/3620 -->
173+
<exclude>io.kroxylicious.proxy.filter.FilterContext#clientSaslAuthenticationSuccess(java.lang.String, java.lang.String)</exclude>
172174
</excludes>
173175
<!-- see documentation -->
174176
</parameter>

kroxylicious-api/src/main/java/io/kroxylicious/proxy/filter/FilterContext.java

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import io.kroxylicious.proxy.authentication.ClientSaslContext;
2121
import io.kroxylicious.proxy.authentication.Subject;
22-
import io.kroxylicious.proxy.authentication.User;
2322
import io.kroxylicious.proxy.filter.metadata.TopicNameMapping;
2423
import io.kroxylicious.proxy.filter.metadata.TopicNameMappingException;
2524
import io.kroxylicious.proxy.tls.ClientTlsContext;
@@ -185,27 +184,6 @@ <M extends ApiMessage> CompletionStage<M> sendRequest(RequestHeaderData header,
185184
* may be arbitrarily interleaved during the lifetime of a given filter instance.
186185
*
187186
* @param mechanism The SASL mechanism used
188-
* @param authorizedId The authorizedId
189-
*
190-
* @deprecated Callers should use {@link #clientSaslAuthenticationSuccess(String, Subject)}
191-
* to announce authentication outcomes instead of this method.
192-
* When this method is used the result of {@link #authenticatedSubject()} will be a non-empty Optional
193-
* with a {@link Subject} having a single {@link User} principal with the given {@code authorizedId}
194-
*/
195-
@Deprecated(since = "0.18")
196-
void clientSaslAuthenticationSuccess(String mechanism,
197-
String authorizedId);
198-
199-
/**
200-
* Allows a filter (typically one which implements {@link SaslAuthenticateRequestFilter})
201-
* to announce a successful authentication outcome with the Kafka client to other plugins.
202-
* After calling this method the results of {@link #clientSaslContext()}
203-
* and {@link #authenticatedSubject()} will both be non-empty for this and other filters.
204-
*
205-
* In order to support reauthentication, calls to this method and
206-
* {@link #clientSaslAuthenticationFailure(String, String, Exception)}
207-
* may be arbitrarily interleaved during the lifetime of a given filter instance.
208-
* @param mechanism The SASL mechanism used
209187
* @param subject The subject
210188
*/
211189
void clientSaslAuthenticationSuccess(String mechanism,
@@ -219,7 +197,7 @@ void clientSaslAuthenticationSuccess(String mechanism,
219197
* It is the filter's responsibility to return the right error response to a client, and/or disconnect.
220198
*
221199
* In order to support reauthentication, calls to this method and
222-
* {@link #clientSaslAuthenticationSuccess(String, String)}
200+
* {@link #clientSaslAuthenticationSuccess(String, Subject)}
223201
* may be arbitrarily interleaved during the lifetime of a given filter instance.
224202
* @param mechanism The SASL mechanism used, or null if this is not known.
225203
* @param authorizedId The authorizedId, or null if this is not known.

kroxylicious-filter-test-support/src/main/java/io/kroxylicious/test/context/MockFilterContext.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -367,13 +367,6 @@ public Optional<ClientTlsContext> clientTlsContext() {
367367
return Optional.ofNullable(clientTlsContext);
368368
}
369369

370-
@Override
371-
public void clientSaslAuthenticationSuccess(String mechanism, String authorizedId) {
372-
synchronized (clientSaslGestureInvocations) {
373-
clientSaslGestureInvocations.add(new ClientSaslGestureInvocation.DeprecatedAuthenticationSuccess(mechanism, authorizedId));
374-
}
375-
}
376-
377370
@Override
378371
public void clientSaslAuthenticationSuccess(String mechanism, Subject subject) {
379372
synchronized (clientSaslGestureInvocations) {
@@ -615,8 +608,6 @@ public record SendRequestInvocation(ApiMessage header, ApiMessage request) {
615608
}
616609

617610
public sealed interface ClientSaslGestureInvocation {
618-
record DeprecatedAuthenticationSuccess(String mechanism, String authorizedId) implements ClientSaslGestureInvocation {}
619-
620611
record AuthenticationSuccess(String mechanism, Subject subject) implements ClientSaslGestureInvocation {}
621612

622613
record AuthenticationFailure(@Nullable String mechanism, @Nullable String authorizedId, Exception exception) implements ClientSaslGestureInvocation {}

kroxylicious-filter-test-support/src/test/java/io/kroxylicious/test/context/MockFilterContextTest.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import io.kroxylicious.test.assertj.MockFilterContextAssert;
3636
import io.kroxylicious.test.context.MockFilterContext.ClientSaslGestureInvocation.AuthenticationFailure;
3737
import io.kroxylicious.test.context.MockFilterContext.ClientSaslGestureInvocation.AuthenticationSuccess;
38-
import io.kroxylicious.test.context.MockFilterContext.ClientSaslGestureInvocation.DeprecatedAuthenticationSuccess;
3938

4039
import edu.umd.cs.findbugs.annotations.NonNull;
4140

@@ -761,15 +760,6 @@ void sendRequestHeaderNotEquals() {
761760
.hasMessageContaining("header being passed to sendRequest did not equal expected header");
762761
}
763762

764-
@Test
765-
void recordsDeprecatedSaslSuccess() {
766-
MockFilterContext context = MockFilterContext.builder(HEADER, MESSAGE).build();
767-
context.clientSaslAuthenticationSuccess("mechanism", "authorizedId");
768-
769-
assertThat(context.clientSaslGestureInvocations()).hasSize(1)
770-
.containsExactly(new DeprecatedAuthenticationSuccess("mechanism", "authorizedId"));
771-
}
772-
773763
@Test
774764
void recordsSaslSuccess() {
775765
MockFilterContext context = MockFilterContext.builder(HEADER, MESSAGE).build();

kroxylicious-filters/kroxylicious-authorization/src/test/java/io/kroxylicious/filter/authorization/MockFilterContext.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,6 @@ public Optional<ClientTlsContext> clientTlsContext() {
138138
throw new UnsupportedOperationException();
139139
}
140140

141-
@Override
142-
public void clientSaslAuthenticationSuccess(@NonNull String mechanism, @NonNull String authorizedId) {
143-
throw new UnsupportedOperationException();
144-
}
145-
146141
@Override
147142
public void clientSaslAuthenticationSuccess(@NonNull String mechanism, @NonNull Subject subject) {
148143
throw new UnsupportedOperationException();

kroxylicious-filters/kroxylicious-entity-isolation/src/test/java/io/kroxylicious/filter/entityisolation/MockFilterContext.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,6 @@ public Optional<ClientTlsContext> clientTlsContext() {
138138
return Optional.empty();
139139
}
140140

141-
/**
142-
* @deprecated for removal
143-
*/
144-
@Override
145-
@Deprecated(forRemoval = true, since = "0.18")
146-
public void clientSaslAuthenticationSuccess(@NonNull String mechanism, @NonNull String authorizedId) {
147-
throw new UnsupportedOperationException();
148-
}
149-
150141
@Override
151142
public void clientSaslAuthenticationSuccess(@NonNull String mechanism, @NonNull Subject subject) {
152143
throw new UnsupportedOperationException();

kroxylicious-filters/kroxylicious-oauthbearer-validation/src/main/java/io/kroxylicious/filter/oauthbearer/OauthBearerValidationFilter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
import com.github.benmanes.caffeine.cache.LoadingCache;
3939

4040
import io.kroxylicious.filter.oauthbearer.sasl.BackoffStrategy;
41+
import io.kroxylicious.proxy.authentication.Subject;
42+
import io.kroxylicious.proxy.authentication.User;
4143
import io.kroxylicious.proxy.filter.FilterContext;
4244
import io.kroxylicious.proxy.filter.RequestFilterResult;
4345
import io.kroxylicious.proxy.filter.ResponseFilterResult;
@@ -177,7 +179,7 @@ public CompletionStage<ResponseFilterResult> onSaslAuthenticateResponse(short ap
177179
SaslAuthenticateResponseData response, FilterContext context) {
178180
if (response.errorCode() == NONE.code()) {
179181
this.validateAuthentication = false;
180-
context.clientSaslAuthenticationSuccess(OAUTHBEARER_MECHANISM, Objects.requireNonNull(authorizationId));
182+
context.clientSaslAuthenticationSuccess(OAUTHBEARER_MECHANISM, new Subject(new User(Objects.requireNonNull(authorizationId))));
181183
}
182184
return context.forwardResponse(header, response);
183185
}

kroxylicious-filters/kroxylicious-oauthbearer-validation/src/test/java/io/kroxylicious/filter/oauthbearer/OauthBearerValidationFilterTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import com.github.benmanes.caffeine.cache.LoadingCache;
3535

3636
import io.kroxylicious.filter.oauthbearer.sasl.BackoffStrategy;
37+
import io.kroxylicious.proxy.authentication.Subject;
38+
import io.kroxylicious.proxy.authentication.User;
3739
import io.kroxylicious.proxy.filter.FilterContext;
3840
import io.kroxylicious.proxy.filter.RequestFilterResultBuilder;
3941
import io.kroxylicious.proxy.filter.filterresultbuilder.CloseOrTerminalStage;
@@ -186,7 +188,7 @@ void mustLetPassWhenAlreadyAuthenticated() throws NoSuchAlgorithmException {
186188

187189
verify(context).forwardResponse(any(ResponseHeaderData.class), eq(givenAuthenticateResponse));
188190
verify(context).forwardRequest(any(RequestHeaderData.class), eq(givenAuthenticateRequest));
189-
verify(context).clientSaslAuthenticationSuccess(OAUTHBEARER_MECHANISM, AUTHORIZED_ID);
191+
verify(context).clientSaslAuthenticationSuccess(OAUTHBEARER_MECHANISM, new Subject(new User(AUTHORIZED_ID)));
190192
}
191193

192194
private void stubInitialAuthentication() throws NoSuchAlgorithmException {
@@ -211,7 +213,7 @@ void shouldNotifyContextOfSuccessfulAuthResponse() throws NoSuchAlgorithmExcepti
211213

212214
verify(context).forwardResponse(any(ResponseHeaderData.class), eq(givenAuthenticateResponse));
213215
verify(context).forwardRequest(any(RequestHeaderData.class), eq(givenAuthenticateRequest));
214-
verify(context).clientSaslAuthenticationSuccess(OAUTHBEARER_MECHANISM, AUTHORIZED_ID);
216+
verify(context).clientSaslAuthenticationSuccess(OAUTHBEARER_MECHANISM, new Subject(new User(AUTHORIZED_ID)));
215217
}
216218

217219
@Test

kroxylicious-filters/kroxylicious-sasl-inspection/src/main/java/io/kroxylicious/filter/sasl/inspection/OauthBearerSaslObserver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public String authorizationId() throws SaslException {
117117
/**
118118
* The server's OAuthBearerSaslServer will accept an expired token as authenticated successfully but with a
119119
* zero {@link SaslAuthenticateResponseData#sessionLifetimeMs()} sent the client. In this circumstance we want to
120-
* avoid announcing {@link io.kroxylicious.proxy.filter.FilterContext#clientSaslAuthenticationSuccess(String, String)}
120+
* avoid announcing {@link io.kroxylicious.proxy.filter.FilterContext#clientSaslAuthenticationSuccess(String, io.kroxylicious.proxy.authentication.Subject)}
121121
* and flag a {@link io.kroxylicious.proxy.filter.FilterContext#clientSaslAuthenticationFailure(String, String, Exception)}
122122
* instead.
123123
*

0 commit comments

Comments
 (0)