2009-07-29 5 views
3

私は、クライアントコードとJAASログインページのユーザーIDとパスワードをWebコードのJAASログインモジュール実装に渡す方法を検討してきました。 JAASでは、ユーザーIDとパスワードのみをログイン・モジュールに渡すことができます。私の考えは、ユーザーIDにIPアドレスを追加し、フォーム送信を呼び出すJavaスクリプトコードを持つことです。私はちょうどこれを行うための適切なJavaスクリプトコードがありません。手伝ってくれますか?JAAS Tomcatログインモジュール可能なIPアドレスの受け渡し方法

Webページには、JAASコードが認識できる2つの入力フィールドj_useridとj_passwordがあります。したがって、フォームを送信する前にj_useridフィールドにipアドレスを追加するために使用できるjavaScriptコードは何ですか。私は 'ip-address#userid'を考えていましたし、ログインモジュールでipアドレスをuseridから外しました。

答えて

1

これらの2つの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アドレスを隠しフィールドに入れるためのbeanを持っているのを見ることができます。 j_username JAASフィールドも隠され、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#ユーザーIDを持っていることを覚えておいてください。

0

申し訳ありませんが、私はクライアント側でipを入手する方法はないと思います。普通のJavascriptです。

クライアントとサーバー間のインフラストラクチャ(ロードバランサ、プロキシなど)を制御しないと、サーバー側でリモートIPをテストすることはおそらく解決できません。 リモートIPがクライアントのIPであると確信しているなら、あなたはtomcat Valveまたはサーブレットフィルタをハックすることができます。

+1

JSF Beanを使用して、隠しフィールドのページにIPアドレスを取得できます。問題は、JAASログインモジュールに渡すことです。 – Martlark

関連する問題