Question

J'ai cherché un moyen de transmettre l'adresse IP du client, ainsi que l'ID utilisateur et le mot de passe d'une page de connexion JAAS à la mise en œuvre du module de connexion JAAS dans mon code Web. JAAS n'autorise que l'ID utilisateur et le mot de passe à être transmis au module de connexion. Mon idée est d'avoir un code de script Java pour ajouter l'adresse IP à l'ID utilisateur, puis appeler le formulaire submit. Je n'ai tout simplement pas le bon code de script Java pour le faire. Pouvez-vous aider?

La page Web comporte deux champs d'entrée, j_userid et j_password, que le code JAAS sait comment consulter. Alors, quel code javaScript puis-je utiliser pour ajouter l'adresse IP au champ j_userid avant l'envoi du formulaire? Je pensais à 'ip-address # userid', puis dans mon module de connexion, je prenais l'adresse IP de l'ID utilisateur.

Était-ce utile?

La solution

J'ai créé ces deux fonctions 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 est appelé à partir d'un bouton de connexion. Vous pouvez voir que j'ai un haricot pour mettre l'adresse IP dans un champ caché. Le champ JAAS j_username est également masqué et est renseigné par la fonction 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()" />

Il associe l'adresse IP au nom d'utilisateur et appelle les fonctions d'envoi JAAS. Ensuite, dans le module de connexion, l'adresse IP et le nom d'utilisateur sont affichés.

String userid = username;

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

Rappelez-vous simplement que FacesContext.getCurrentInstance (). getExternalContext (). getRemoteUser () contient maintenant l'ip # ID utilisateur.

Autres conseils

Désolé, je ne pense pas qu'il soit possible d'obtenir l'adresse IP côté client, en Javascript simple.

Tester l'adresse IP distante côté serveur n'est probablement pas une solution si vous ne contrôlez pas l'infrastructure entre le client et le serveur (équilibreurs de charge, mandataires, etc.). Si vous êtes sûr que l’IP distante est l’IP du client, vous devriez pouvoir pirater une Valve tomcat ou un filtre de servlet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top