in src/authentication/adfs/adfs.cc [141:171]
std::map<std::string, std::string> AdfsCredentialsProvider::get_para_from_html_body(std::string& body) {
std::map<std::string, std::string> parameters;
for (auto& input_tag : get_input_tags_from_html(body)) {
std::string name = get_value_by_key(input_tag, std::string("name"));
std::string value = get_value_by_key(input_tag, std::string("value"));
DLOG(INFO) << "Input Tag [" << input_tag << "], Name [" << name << "], Value [" << value << "]";
std::string name_lower(name);
std::transform(name_lower.begin(), name_lower.end(), name_lower.begin(), [](unsigned char c) {
return std::tolower(c);
});
if (name_lower.find("username") != std::string::npos) {
parameters.insert(std::pair<std::string, std::string>(name, std::string(cfg.idp_username)));
} else if (name_lower.find("authmethod") != std::string::npos) {
if (!value.empty()) {
parameters.insert(std::pair<std::string, std::string>(name, value));
}
} else if (name_lower.find("password") != std::string::npos) {
parameters.insert(std::pair<std::string, std::string>(name, std::string(cfg.idp_password)));
} else if (!name.empty()) {
parameters.insert(std::pair<std::string, std::string>(name, value));
}
}
DLOG(INFO) << "parameters size: " << parameters.size();
for (auto& itr : parameters) {
DLOG(INFO) << "Parameter Key [" << itr.first << "], Value Size [" << itr.second.size() << "]";
}
return parameters;
}