Модуль входа в систему JAAS tomcat возможный способ передачи IP-адреса - PullRequest
3 голосов
/ 29 июля 2009

Я искал способ передачи клиентского ip, а также ID пользователя и пароля со страницы входа в систему JAAS в реализацию модуля входа в систему JAAS в моем веб-коде. JAAS позволяет только идентификатор пользователя и пароль передаваться в модуль входа в систему. Моя идея состоит в том, чтобы иметь код сценария Java, чтобы добавить IP-адрес к идентификатору пользователя, а затем вызвать форму отправки. У меня просто нет нужного кода Java-скрипта для этого. Вы можете помочь?

На веб-странице есть два поля ввода, j_userid и j_password, которые знает код JAAS для его просмотра. Так какой код javaScript я могу использовать, чтобы добавить IP-адрес в поле j_userid перед отправкой формы. Я думал о «ip-address # userid», а затем в своем модуле входа в систему я бы снял IP-адрес с идентификатора пользователя.

Ответы [ 2 ]

1 голос
/ 30 июля 2009

Я создал эти две функции javaScript.

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 вызывается с помощью кнопки входа в систему. Вы можете видеть, что у меня есть бин, чтобы поместить IP-адрес в скрытое поле. Поле JAAS имени j_username также скрыто и заполняется функцией addIpSubmit ().

<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()" />

Он подключает ip к имени пользователя и вызывает функции отправки JAAS. Затем в модуле входа в систему я получаю IP-адрес и имя пользователя.

String userid = username;

if( username.contains( "#" ) )
{
    ip = username.split( "#" )[0];
    userid = username.split( "#" )[1];
}

Просто помните, что FacesContext.getCurrentInstance (). GetExternalContext (). GetRemoteUser () теперь содержит идентификатор пользователя ip #.

0 голосов
/ 29 июля 2009

Извините, я не думаю, что есть способ получить ip на стороне клиента, в простом Javascript.

Проверка удаленного ip на стороне сервера, вероятно, не является решением, если вы не контролируете инфраструктуру между клиентом и сервером (балансировщики нагрузки, прокси-серверы ...). Если вы уверены, что удаленный ip - это ip клиента, вы сможете взломать Tomcat Valve или фильтр сервлета.

...