質問

クライアントコードとユーザーIDおよびパスワードをJAASログインページからWebコードのJAASログインモジュール実装に渡す方法を検討しています。 JAASでは、ログインモジュールにユーザーIDとパスワードのみを渡すことができます。私のアイデアは、ユーザーIDにIPアドレスを追加し、フォーム送信を呼び出すJavaスクリプトコードを用意することです。これを行うための適切なJavaスクリプトコードがありません。お手伝いできますか?

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

役に立ちましたか?

解決

これら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#useridが含まれるようになったことを覚えておいてください。

他のヒント

申し訳ありませんが、プレーンJavaScriptでクライアント側にIPを取得する方法はないと思います。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top