I struggle making a RSocket request with simple auth from NodeJS (client) to Java Spring (server). I am sure that the problem resides in JS code because :
- it works well without auth
- Java Spring (client) to the Java Spring (server) works well with simple auth
Here is my NodeJS client:
const { RSocketConnector } = require('rsocket-core')
const { TcpClientTransport } = require('rsocket-tcp-client')
const { encodeRoute, encodeCompositeMetadata, WellKnownMimeType, encodeSimpleAuthMetadata } = require('rsocket-composite-metadata')
const { IdentitySerializer } = require('rsocket-core')
const MESSAGE_RSOCKET_ROUTING = WellKnownMimeType.MESSAGE_RSOCKET_ROUTING
const MESSAGE_RSOCKET_COMPOSITE_METADATA = WellKnownMimeType.MESSAGE_RSOCKET_COMPOSITE_METADATA
const MESSAGE_RSOCKET_AUTHENTICATION = WellKnownMimeType.MESSAGE_RSOCKET_AUTHENTICATION
function makeConnector() {
return new RSocketConnector({
setup: {
metadataMimeType: MESSAGE_RSOCKET_COMPOSITE_METADATA.string,
},
serializers: {
metadata: IdentitySerializer,
},
transport: new TcpClientTransport({
connectionOptions: {
host: "127.0.0.1",
port: 6120,
},
}),
})
}
function createMetadata(route) {
const encodedRoute = encodeRoute(route)
const encodedSimpleAuth = encodeSimpleAuthMetadata("user", "pass")
const map = new Map()
map.set(MESSAGE_RSOCKET_ROUTING.string, encodedRoute)
map.set(MESSAGE_RSOCKET_AUTHENTICATION.string, encodedSimpleAuth)
return encodeCompositeMetadata(map)
}
function requestResponse(rsocket, route, data) {
return rsocket.requestResponse(
{
data: Buffer.from(data),
metadata: createMetadata(route),
},
{
onError: (e) => {
console.error(e)
},
onNext: (payload, isComplete) => {
console.info(`requestResponse onNext payload[data: ${payload.data}; metadata: ${payload.metadata}]|${isComplete}`)
},
onComplete: () => {
console.info(`requestResponse onComplete`)
},
onExtension: () => {},
}
)
}
async function start() {
const connector = makeConnector()
const rsocket = await connector.connect()
requestResponse(rsocket, "request-response", "some data")
}
start()
I constantly get Access Denied exception.
Thanks in advance.