Тестирование весенней загрузки x509 - pcf - PullRequest
0 голосов
/ 15 ноября 2018

В Cloud Foundry Я настроил его так, чтобы сертификат клиента пересылался в мое приложение весенней загрузки.

Сертификат помещается в заголовок x-forwarded-client-cert, приложение весенней загрузки считывает это? И проверяет, находится ли CN в белом списке, и отправляет соответствующий ответ. К сожалению, я не могу повторить это поведение с помощью теста. Я продолжаю получать (в отладочном выводе):

"сертификат клиента не найден в запросе"

Я использую REST Assured и мой тест выглядит так:

String cert = StreamUtils.copyToString(
  new ClassPathResource("certs/client/client_mod.crt").getInputStream(), Charset.defaultCharset());

cert = cert.replace("\r\n", "").replace("\n", "");

given()
  .spec(spec)
  .header("x-forwarded-client-cert", cert)
  .when()
  .get(HealthResource.BASE_URL + "/ip-reverse-lookup")
  .then()
  .statusCode(HttpStatus.OK.value());

Базовое значение URI для этого http://localhost. Сертификат клиента "-----BEGIN CERTIFICATE-----" и "-----END CERTIFICATE-----" был удален, а новые строки удалены (как вы можете видеть в коде выше).

В моем application.yml у меня есть это:

server:
  ssl:
    enabled: false
    key-store:
    key-store-password:
    trust-store:
    trust-store-password:
    client-auth: need

Метод configure класса, расширяющего WebSecurityConfigurerAdapter, выглядит следующим образом:

http
  .x509()
  .subjectPrincipalRegex("CN=(.*?)(?:,|$)")
  .userDetailsService(customUserDetailsService)
  .and()
  .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER)
  .and()
  .csrf().disable();

Любая помощь / предложения будут оценены.

Спасибо.

...