No Encoder for BearerTokenMetadata in Spring Security RSocket
When using JWT with Bearer Token, Sending the JWT Token from Requester to Responder fails because there is no Encoder for BearerTokenMetadata (MimeType.BEARER_AUTHENTICATION_MIME_TYPE).
Actual Behavior
No Encoder for this type of Authentication
Expected Behavior
Must have an Encoder
Version
5.2.0.RC1
Sample
Must have an Encoder similar to following.
`
public class BearerTokenEncoder extends AbstractEncoder
public BearerTokenEncoder() {
super(BearerTokenMetadata.BEARER_AUTHENTICATION_MIME_TYPE);
}
@Override
public Flux<DataBuffer> encode(Publisher<? extends BearerTokenMetadata> publisher, DataBufferFactory dataBufferFactory, ResolvableType resolvableType, MimeType mimeType, Map<String, Object> hints) {
return Flux.from(publisher).map((credentials) -> {
return this.encodeValue(credentials, dataBufferFactory, resolvableType, mimeType, hints);
});
}
@Override
public DataBuffer encodeValue(BearerTokenMetadata credentials, DataBufferFactory bufferFactory, ResolvableType valueType, MimeType mimeType, Map<String, Object> hints) {
String token = credentials.getToken();
byte[] tokenBytes = token.getBytes(StandardCharsets.UTF_8);
DataBuffer metadata = bufferFactory.allocateBuffer();
boolean release = true;
DataBuffer dataBuffer;
try {
metadata.write(tokenBytes);
release = false;
dataBuffer = metadata;
} finally {
if (release) {
DataBufferUtils.release(metadata);
}
}
return dataBuffer;
}
} `
Comment From: jzheaux
message/x.rsocket.authentication.bearer.v0 didn't make it into the spec so is now deprecated. Please use message/x.rsocket.authentication.v0 instead.