JAAS tomcat Login-Modul möglich Methode IP-Adresse weitergeben
-
05-07-2019 - |
Frage
Ich habe geschaut, in eine Weise, den Client-IP sowie die Benutzer-ID und Passwort von einer JAAS Login-Seite zur JAAS Login-Modul Implementierung vorbei in meinem Web-Code. JAAS ermöglicht nur der Benutzer-ID und das Passwort zum Login-Modul übergeben werden. Meine Idee ist es, ein Java-Script-Code zu haben, die IP-Adresse an den Benutzer-ID anhängen und rufen Sie dann das Formular aus. Ich habe einfach nicht den richtigen Java-Script-Code, dies zu tun. Können Sie helfen?
Die Webseite verfügt über zwei Eingabefelder, j_userid und j_password, die der JAAS Code kennt, es zu suchen. Also, was JavaScript-Code kann ich die IP-Adresse das j_userid Feld vor dem Formular hinzuzufügen. Ich dachte an ‚ip-Adresse # Benutzer-ID‘ und dann in meinem Login-Modul ich aus der Benutzer-ID die IP-Adresse nehmen würde.
Lösung
Ich habe diese zwei JavaScript-Funktionen.
function addIpSubmit()
{
var theForm = document.getElementById("login_form");
var userName = theForm.username.value;
userName = theForm.clientip.value + "#" + userName;
theForm.j_username.value = userName;
if( validate_required( theForm.username, "User ID is required" ) )
{
if( validate_required( theForm.j_password, "Password is required" ) )
{
theForm.submit();
}
}
}
function validate_required( field, alerttxt )
{
with (field)
{
if (value==null||value=="")
{
alert(alerttxt);
return false;
}
else
{
return true;
}
}
}
addIpSubmit wird von einer Login-Taste aufgerufen. Sie können sehen, ich eine Bohne haben die IP-Adresse in ein verstecktes Feld zu setzen. Das j_username JAAS Feld ist auch versteckt und wird durch die addIpSubmit () Funktion ausgefüllt.
<input id="clientip" type="hidden" name="clientip" value="#{loginMBean.ip}"/>
<input id="j_username" type="hidden" name="j_username" />
<input type="button" name="OtherLogin" value="Login" onclick="addIpSubmit()" />
Es mungs die IP auf den Benutzernamen und ruft die JAAS-Funktionen vor. Dann in der Login-Modul bekomme ich die IP-Adresse und den Benutzernamen aus.
String userid = username;
if( username.contains( "#" ) )
{
ip = username.split( "#" )[0];
userid = username.split( "#" )[1];
}
Denken Sie daran, dass die FacesContext.getCurrentInstance (). GetExternalContext (). GetRemoteUser () nun die IP-# Benutzer-ID in sich hat.
Andere Tipps
Sorry, ich glaube nicht, dass es einen Weg gibt, die IP auf der Client-Seite im Klar Javascript.
zu erhalten, um die Remote-IP-Test auf der Server-Seite ist wahrscheinlich keine Lösung, wenn Sie nicht die Infrastruktur zwischen dem Client steuern können und den Server (Last-Balancern, Proxies ...). Wenn Sie die Remote-IP die IP des Clients sind zuversichtlich ist, sollten Sie in der Lage ein tomcat Ventil oder einen Servlet-Filter zu hacken.