in src/authentication/okta/okta.cc [64:101]
std::string OktaCredentialsProvider::get_session_token() {
// Send request for session token
std::string url = get_session_token_url();
LOG(INFO) << "Got OKTA Session Token URL: " << url;
std::shared_ptr<Aws::Http::HttpRequest> req = Aws::Http::CreateHttpRequest(
url, Aws::Http::HttpMethod::HTTP_POST, Aws::Utils::Stream::DefaultResponseStreamFactoryMethod);
Aws::Utils::Json::JsonValue json_body;
json_body.WithString("username", std::string(cfg.idp_username))
.WithString("password", std::string(cfg.idp_password));
Aws::String json_str = json_body.View().WriteReadable();
Aws::String json_len = Aws::Utils::StringUtils::to_string(json_str.size());
req->SetContentType("application/json");
req->AddContentBody(Aws::MakeShared<Aws::StringStream>("", json_str));
req->SetContentLength(json_len);
std::shared_ptr<Aws::Http::HttpResponse> response = http_client->MakeRequest(req);
// Check resp status
if (response->GetResponseCode() != Aws::Http::HttpResponseCode::OK) {
LOG(WARNING) << "OKTA request returned bad HTTP response code: " << response->GetResponseCode();
if (response->HasClientError()) {
LOG(WARNING) << "HTTP Client Error: " << response->GetClientErrorMessage();
}
return "";
}
// Get response session token
Aws::Utils::Json::JsonValue json_val(response->GetResponseBody());
if (!json_val.WasParseSuccessful()) {
LOG(WARNING) << "Unable to parse JSON from response";
return "";
}
Aws::Utils::Json::JsonView json_view = json_val.View();
if (!json_view.KeyExists("sessionToken")) {
LOG(WARNING) << "Could not find session token in JSON";
return "";
}
return json_view.GetString("sessionToken");
}