anchor.diff:  Now that you're in possession of a bearer token, it might be handy to pass that to downstream services.
   This is quite simple with `{security-api-url}org/springframework/security/oauth2/server/resource/web/reactive/function/client/ServerBearerExchangeFilterFunction.html[ServerBearerExchangeFilterFunction]`, which you can see in the following example:
   
  -[source,java]
  +====
  +.Java
  +[source,java,role="primary"]
   ----
   @Bean
   public WebClient rest() {
  
positive.code:     );
  ----
  
  In this case, you construct `JwtIssuerReactiveAuthenticationManagerResolver` with a strategy for obtaining the `ReactiveAuthenticationManager` given the issuer.
  This approach allows us to add and remove elements from the repository (shown as a `Map` in the snippet) at runtime.
  
  
negative.code: }
  ----
  
  .Kotlin
  [source,kotlin,role="secondary"]
  ----
  class JwtOpaqueTokenIntrospector : ReactiveOpaqueTokenIntrospector {
      private val delegate: ReactiveOpaqueTokenIntrospector = NimbusReactiveOpaqueTokenIntrospector("https://idp.example.org/introspect", "client", "secret")
      private val jwtDecoder: ReactiveJwtDecoder = NimbusReactiveJwtDecoder(ParseOnlyJWTProcessor())
      override fun introspect(token: String): Mono<OAuth2AuthenticatedPrincipal> {
          return delegate.introspect(token)
                  .flatMap { jwtDecoder.decode(token) }
                  .map { jwt: Jwt -> DefaultOAuth2AuthenticatedPrincipal(jwt.claims, NO_AUTHORITIES) }
      }
  
      private class ParseOnlyJWTProcessor : Converter<JWT, Mono<JWTClaimsSet>> {
          override fun convert(jwt: JWT): Mono<JWTClaimsSet> {
              return try {
                  Mono.just(jwt.jwtClaimsSet)
              } catch (e: Exception) {
                  Mono.error(e)
              }
          }
      }
  }
  ----
  ====
  
  Thereafter, this custom introspector can be configured simply by exposing it as a `@Bean`:
  
  ====
  .Java
  [source,java,role="primary"]
  ----
  @Bean
  public ReactiveOpaqueTokenIntrospector introspector() {
      return new JwtOpaqueTokenIntropsector();
  }
  ----
  
  .Kotlin
  [source,kotlin,role="secondary"]
  ----
  @Bean
  fun introspector(): ReactiveOpaqueTokenIntrospector {
      return JwtOpaqueTokenIntrospector()
  }
  ----
  ====
  
  [[webflux-oauth2resourceserver-opaque-userinfo]]
  === Calling a `/userinfo` Endpoint
  