3

シンプルなサーブレット アプリの安全な部分があり、アプリの安全な部分にパラメーターを渡す必要があります。

フロー:

  1. サードパーティは私のログインメカニズムを使用する必要があります (シンプルで安全なサーブレット)
  2. ユーザーが mycompany.com/loginApp/login?pref=1 にアクセスしようとしています。
  3. 「/login」URL は安全であるため、アプリ サーバーはブラウザに login.jsp にリダイレクトするように指示しますが、この時点で URL は mycompany.com/loginApp/login/login.jsp に更新されます (「? pref=1" はなくなりました)

私の web.xml のセキュリティは次のようになります。

    <security-constraint>
    <web-resource-collection>
        <web-resource-name>Secured</web-resource-name>
        <description></description>
        <url-pattern>/home</url-pattern>
        <url-pattern>/login</url-pattern>
        <url-pattern>/jsp/apps/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>

    <auth-constraint>
        <description>protectedlinks</description>
        <role-name>protected</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>mycompany.com</realm-name>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/error.jsp</form-error-page>
    </form-login-config>
</login-config>

<security-role>
    <description>
    Protected portion of site</description>
    <role-name>protected</role-name>
</security-role>

ネットを見てみると、安全なコンテンツにアクセスしようとすると、AppServer が login.jsp へのリダイレクトを実際に行っているようです: http://docs.oracle.com/javaee/5/tutorial/doc/bncbe.html#bncbq

私がしたいのは、「pref = 1」が何らかの形でlogin.jspに永続化され、認証サーブレットに送信されることです(DB内のユーザーを検証します)。

これを行う方法に関するアドバイスはありますか?

UPDATE 隠しパラメータは機能しません。ブラウザーは完全なリダイレクトを実行し、すべての要求 (URL の "pref=1" パラメーターを含む) を削除しました。したがって、login.jsp のフォームに非表示のパラメーターとして含めることはできません。

UPDATE 2 「pref」変数は動的であるため、常に 1 になるとは限りません。

ありがとう、ショーン

4

2 に答える 2

2

login.jsp<input type="hidden" name="pref" value="1"/>のタグ内に追加します<form/>

ただし、POST パラメーターになるため、クエリ文字列で正確に使用できるわけではありませんが、リクエストには含まれます。

上記は静的パラメーターをカバーしています。自動リダイレクトで login.jsp を介して変数を渡すには、フィルターを使用する必要があります。これは SO ここでカバーされています:春のセキュリティログインページで追加のパラメーターを渡す方法

于 2012-06-21T15:49:32.787 に答える
0

これがあなたの望むようにできるかどうかはわかりません。少しハッキのアプローチである私がすることは次のとおりです。

最初のリクエストを受け入れるサーブレットをセットアップします。このサーブレットは、渡されたパラメーター (pref) をセッション変数に格納します。次に、このサーブレットは保護されたリソースへのリダイレクトを行います。そして、自動的にアプリケーション サーバーがユーザーをログイン ページに誘導します。セッションに pref パラメータがあると、好きなように使用できます。

これが役立つことを願っています

于 2012-06-21T21:08:29.013 に答える