Web アプリケーションに SSO ログインを使用しています。コードは次のとおりです。
@Command("doSSOLogin")
@NotifyChange("showConflictWindow")
public void doSSOLogin(@ContextParam(ContextType.VIEW) Component view) {
logger.info("Login Button is clicked..");
doSSOLoginAuthorization(LoginType.LOGIN_IF_NO_CONFLICT);
}
private void doSSOLoginAuthorization(LoginType argLoginType) {
HttpServletResponse response = getHttpServletResponse();
HttpServletRequest request = getHttpServletRequest();
if (selectedDatabase == null) {
Messagebox.show("Must select a database", "Error", Messagebox.OK,
Messagebox.ERROR);
return;
}
String Authorization = request.getHeader("Authorization");
if (Authorization == null) {
logger.info("Authoriztion is null");
response.reset();
response.setHeader("WWW-Authenticate", "NEGOTIATE");
response.setContentLength(0);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setHeader("connectionCache", selectedDatabase.getValue());
response.setHeader("languageType", selectedLanguage.getValue());
try {
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
return;
} else {
String token = Authorization.substring("NEGOTIATE ".length());
logger.info("Authoriztion is not null having token ::" + token);
if (token.startsWith("TlRM")) {
logger.debug("We do not support NTLM authentication: " + token);
System.out.println("We do not support NTLM authentication");
return;
}
}
}
ユーザーがログインボタンをクリックすると、このコードが通過し、最初の承認はnullです。リクエストヘッダーに承認を設定し、ウィンドウの資格情報を要求し、2回目にこのボタンをクリックすると、承認が得られます。しかし、ボタンをもう一度クリックしたくありません。以前のアプリケーションでは既に機能していましたが、テクノロジーはjspだったため、この作業はシングルクリックで行う必要があります。
私のコードでZKまたは何か他のものを使用することの問題ですか? コールバックする解決策があれば、私を助けてください。
前もって感謝します!