Невозможно получить конечные точки привода Steeltoe через http

Я просмотрел заметку о выпуске https://steeltoe.io/reference/reference-release-notes/ и заинтересовался раскрытием конечной точки / работоспособности через http(я имею в виду вне менеджера приложений PCF). У меня есть следующие настройки в appsettings.json

{
   "management": {
    "endpoints": {
      "path": "/cloudfoundryapplication",
      "cloudfoundry": {
        "validateCertificates": false
      },
      "health": {
        "showdetails": "always",
        "claim": {
          "type": "health_actuator",
          "value": "see_details"
        }
      }
    }
  } 
}

Мой проект имеет ссылку на Steeltoe.Management.CloudFoundryCore V2.2.0, и мой запуск выглядит следующим образом

public void ConfigureServices(IServiceCollection services)
        {
             // Add health actuator
            services.AddHealthActuator(configuration);
            services.AddCloudFoundryActuators(Configuration);
        }

public void Configure(IApplicationBuilder app) 

        {
            if (HostingEnvironment.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseCloudFoundryActuators();          

            app.UseHealthChecks();
            app.UseMvc();
        }

Теперь, когда я пытался вызвать URL-адрес https://myservice/cloudfoundryapplication/health я получаю сообщение об ошибке 401, в котором говорится {"security_error":"Заголовок авторизации отсутствует или недействителен"}. Любая идея, что здесь может быть не так.

1 ответ

Вот шаги, необходимые для доступа к конечной точке работоспособности вне диспетчера приложений при работе в cloudfoundry:

  1. Не ставить management:endpoints:path или установите для него что-либо кроме / cloudfoundryapplication. Ваша внешняя конечная точка будет доступна в / привод / / по умолчанию. Вы можете установить его, например, на управление (только не в cloudfoundryapplication, поскольку приложения используют маршрут и он защищен).
  2. Добавьте ваши приводы так: services.AddCloudFoundryActuators(Configuration, MediaTypeVersion.V2, ActuatorContext.ActuatorAndCloudFoundry);Это включает в себя актуатор Health, поэтому вам не нужен другой AddHealthActuator
  3. Используйте приводы как это:

    app.UseCloudFoundryActuators( MediaTypeVersion.V2, ActuatorContext.ActuatorAndCloudFoundry);

  4. Чтобы защитить его, вы можете добавить этот конфиг, "claim": { "type": "health_actuator", "value": "see_details" }

... ожидается, что вы предоставите их по вашему запросу. Но похоже, что нет. Эта конфигурация является способом защиты конечной точки. Чтобы увидеть это без безопасности, вы можете удалить эту часть конфигурации. Также по умолчанию показываются подробности, так что вы можете полностью удалить конфигурацию в разделе "здоровье".

Другие вопросы по тегам