Reactive Spring 5 Nombre principal de security en Kotlin

Estoy intentando convertir el ejemplo de Reactive Spring Security ( https://github.com/spring-tips/reactive-security/blob/master/src/main/java/com/example/securitydemo/SecurityDemoApplication.java ) en Kotlin .

Esto es lo que tengo hasta ahora:

WebConfiguration.kt

@Configuration class WebConfiguration { fun message(serverRequest: ServerRequest): Mono<ServerResponse> { val principalPublisher = serverRequest.principal().map { p -> "Hello, " + p.name + "!" } return ServerResponse.ok().body(principalPublisher.toMono()) } @Bean fun routes() = router { GET("/message") { ServerResponse.ok().body(message(it)) } } } 

SecurityConfiguration.kt

 @Configuration @EnableWebFluxSecurity class SecurityConfiguration { @Bean fun userDetailsRepository(): UserDetailsRepository { val user = User.withUsername("user").roles("USER").password("password").build() return MapUserDetailsRepository(user) } @Bean fun security(httpSecurity: HttpSecurity): SecurityWebFilterChain { return httpSecurity .authorizeExchange() .pathMatchers("/users/{username}") .access { mono, context -> mono .map { auth -> auth.name.equals(context.variables["username"]) } .map(::AuthorizationDecision) } .anyExchange().authenticated() .and() .build() } } 

Después de iniciar session, y voy a http://localhost:8080/message la respuesta que obtengo es data: lugar de Hello, user! . ¿Cómo puedo recuperar el nombre del usuario conectado y mostrar ese post? Además, ¿hay una mejor manera 'Kotlin' de implementar este ejemplo?