Это кажется странным. Когда я получаю конфигурацию OpenID через Postman или в браузере, я получаю правильный ответ конфигурации.
Например, GET через Почтальон или в браузере на
http://127.0.0.1:8080/auth/realms/myrealm/.well-known/openid-configuration
возвращает конечную точку, включая порт 8080, правильно:
{
snip
"jwks_uri": "http://127.0.0.1:8080/auth/realms/myrealm/protocol/openid-connect/certs"
snip
}
Однако выборка из тот же хост, цель, порт, схема (http) в моем приложении C ++ возвращает конечные точки конфигурации без порта (например, отсутствует 8080)
{
snip
"jwks_uri":"http://127.0.0.1/auth/realms/myrealm/protocol/openid-connect/certs"
snip
}
Я не вижу проблем в моем клиентском коде C ++ Я не уверен, что это вообще меняет дело. Для полноты, это код C ++, который я использую рядом с фактическими значениями при отправке запроса, хотя это не должно быть вопросом используемого языка программирования:
req_.version(version); // HTTP 1.1
req_.method(method); // GET
req_.target(target); // /auth/realms/myrealm/.well-known/openid-configuration
req_.set(http::field::host, host); // 127.0.0.1
static const std::string agent = app.myAgent();
req_.set(http::field::user_agent, agent);
req_.set(http::field::content_type, contentType); // application/json
У меня здесь два вопроса:
1) Что заставляет Keycloak не добавлять порт в конечные точки? И как это обойти?
2) В чем разница между звонками? Это должен быть ванильный запрос GET.