Я пытаюсь проверить SSO с помощью HtmlUnit и не удается.
implementation group: 'net.sourceforge.htmlunit', name: 'htmlunit', version: '2.35.0'
Мой код похож на это: -
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);
try (final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_60)) {
webClient.getCookieManager().setCookiesEnabled(true);
webClient.addRequestHeader("authority", "my.organization.com");
webClient.addRequestHeader("referer", "https://research.development.com/login/");
webClient.addRequestHeader("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36");
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setRedirectEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setMaxInMemory(-1);
// Enter User Name
final HtmlPage page = webClient.getPage(
"https://my.organization.com/as/authorization.oauth2?platSite=XYZZ/xyzz&client_id=RESEARCH-DEVELOPMENT-2&response_type=code&scope=openid xyz_auth_info profile email xyz_analytics_info urn:com:xyz:idp:policy:product:indv_identity&prompt=login&redirect_uri=https://research.development.com/login/");
final HtmlInput username = (HtmlInput) page.getHtmlElementById("xyz-email");
username.setValueAttribute("test-user@gmail.com");
final HtmlButton continueButton = page.getHtmlElementById("xyz-xyzPrimaryBtn");
// Enter Password
final HtmlPage passwordPage = continueButton.click();
webClient.waitForBackgroundJavaScriptStartingBefore(10000);
final HtmlInput password = (HtmlInput) passwordPage.getHtmlElementById("xyz-password");
password.setValueAttribute("password");
// Sign In
final HtmlForm signinForm = passwordPage.getFormByName("xyzForm");
final ScriptResult nextPage = signinForm.fireEvent(Event.TYPE_SUBMIT);
webClient.waitForBackgroundJavaScriptStartingBefore(10000);
}
}
Я вижу, что яудалось успешно ввести имя пользователя и пароль и отправить форму
Что я не могу выяснить, это как получить возвращенный код из формы POST
Разве это невозможно?
Форма имеет эти атрибуты
<form class="xyz-signin-form" method="POST" action="/as/F7zpZ/resume/as/authorization.ping?client_id=RESEARCH-DEVELOPMENT-2&" autocomplete="off" name="xyzForm" novalidate>
Как получить доступ к ответу из этого POST?