Skip to content

Commit

Permalink
chore: rename method
Browse files Browse the repository at this point in the history
  • Loading branch information
karenc-bq committed Sep 17, 2024
1 parent e11669d commit 6aaf5fd
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 19 deletions.
19 changes: 6 additions & 13 deletions driver/adfs_proxy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -76,17 +76,16 @@ std::string ADFS_SAML_UTIL::get_saml_assertion(DataSource* ds) {
if (!std::regex_search(body, m, ADFS_REGEX::FORM_ACTION_PATTERN)) {
return std::string();
}
std::string form_action = escape_html_entity(m.str(1));
std::string form_action = unescape_html_entity(m.str(1));
const std::string params = get_parameters_from_html(ds, body);
const std::string content = get_form_action_body(form_action, params);
printf("hjello %s\n", content.c_str());
if (std::regex_search(content, m, ADFS_REGEX::SAML_RESPONSE_PATTERN)) {
return m.str(1);
}
return std::string();
}

std::string ADFS_SAML_UTIL::escape_html_entity(const std::string& html) {
std::string ADFS_SAML_UTIL::unescape_html_entity(const std::string& html) {
std::string retval("");
int i = 0;
int length = html.length();
Expand Down Expand Up @@ -151,7 +150,7 @@ std::string ADFS_SAML_UTIL::get_value_by_key(const std::string& input, const std
std::smatch matches;
if (std::regex_search(input, matches, std::regex(pattern))) {
MYLOG_TRACE(init_log_file(), 0, "get_value_by_key");
return escape_html_entity(matches.str(2));
return unescape_html_entity(matches.str(2));
}
return "";
}
Expand All @@ -170,10 +169,8 @@ std::string ADFS_SAML_UTIL::get_parameters_from_html(DataSource* ds, const std::

if (nameLower.find("username") != std::string::npos) {
parameters.insert(std::pair<std::string, std::string>(name, username));
} else if (nameLower.find("authmethod") != std::string::npos) {
if (!value.empty()) {
parameters.insert(std::pair<std::string, std::string>(name, value));
}
} else if ((nameLower.find("authmethod") != std::string::npos) && !value.empty()) {
parameters.insert(std::pair<std::string, std::string>(name, value));
} else if (nameLower.find("password") != std::string::npos) {
parameters.insert(std::pair<std::string, std::string>(name, password));
} else if (!name.empty()) {
Expand Down Expand Up @@ -201,11 +198,7 @@ std::string ADFS_SAML_UTIL::get_form_action_body(const std::string& url, const s
"Failed to get SAML Assertion from ADFS : " + e.error_message() + ". Please verify your ADFS credentials.";
throw SAML_HTTP_EXCEPTION(error);
}

if (res.empty()) {
return "";
}
return res;
return res.empty() ? "" : res;
}

#ifdef UNIT_TEST_BUILD
Expand Down
12 changes: 6 additions & 6 deletions driver/adfs_proxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@
#include "saml_util.h"

namespace ADFS_REGEX {
const std::regex FORM_ACTION_PATTERN(R"#(<form.*?action=\"([^\"]+)\")#", std::regex_constants::icase);
const std::regex SAML_RESPONSE_PATTERN("\"SAMLResponse\"\\W+value=\"(.*?)\"(\\s*/>)", std::regex_constants::icase);
const std::regex URL_PATTERN(R"#(^(https)://[-a-zA-Z0-9+&@#/%?=~_!:,.']*[-a-zA-Z0-9+&@#/%=~_'])#",
std::regex_constants::icase);
const std::regex INPUT_TAG_PATTERN(R"#(<input id=(.*))#", std::regex_constants::icase);
const std::regex FORM_ACTION_PATTERN(R"#(<form.*?action=\"([^\"]+)\")#", std::regex_constants::icase);
const std::regex SAML_RESPONSE_PATTERN("\"SAMLResponse\"\\W+value=\"(.*?)\"(\\s*/>)", std::regex_constants::icase);
const std::regex URL_PATTERN(R"#(^(https)://[-a-zA-Z0-9+&@#/%?=~_!:,.']*[-a-zA-Z0-9+&@#/%=~_'])#",
std::regex_constants::icase);
const std::regex INPUT_TAG_PATTERN(R"#(<input id=(.*))#", std::regex_constants::icase);
} // namespace ADFS_REGEX

class ADFS_SAML_UTIL : public SAML_UTIL {
Expand All @@ -52,7 +52,7 @@ class ADFS_SAML_UTIL : public SAML_UTIL {
std::shared_ptr<SAML_HTTP_CLIENT> http_client;

private:
static std::string escape_html_entity(const std::string& html);
static std::string unescape_html_entity(const std::string& html);
std::vector<std::string> get_input_tags_from_html(const std::string& body);
std::string get_value_by_key(const std::string& input, const std::string& key);
std::string get_parameters_from_html(DataSource* ds, const std::string& body);
Expand Down

0 comments on commit 6aaf5fd

Please sign in to comment.