Модуль входа в систему JAAS tomcat возможный способ передачи IP-адреса

StackOverflow https://stackoverflow.com/questions/1200091

Вопрос

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

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

Это было полезно?

Решение

Я создал эти две функции 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 # userid.

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top