問題タブ [tomcat-valve]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3151 参照

tomcat - ネットワーク転送時間なしでリクエストの実行時間を測定するには?

私のバルブでは、次のような http クエリの実行時間を取得します。

この方法で取得した時間は、サーバー側の実行時間だけでなく、ネットワーク時間も提供してくれると思いますか? 出来ますか ?

(リクエストを行うクライアントによっては、測定された平均時間が1つのIPから同じではないため、平均時間は70ミリ秒で、別のIPは270ミリ秒です)

Filter にまったく同じコードを書きました。

、しかし、私のテストでは、バルブとフィルターの実行時間は同じです...

サーブレットのみの実行時間を取得することにもっと興味があります。しかし、最後のバイトが送信された時間も取得できれば、興味があります。

バルブとフィルターで何ができるかを明確にしてくれてありがとう。

0 投票する
0 に答える
368 参照

security - Jboss/Tomcat バルブを使用して、URL 書き換えなどの URL を暗号化/復号化しますか?

サーブレットと jsps を使用して JBoss でサードパーティ アプリケーションを実行しています。ソースコードにアクセスできません。

あるサーブレットが次のように実行されるとしましょう: http://localhost/myApp/view.do?clientId=45&command=34

これを取得したい: http://localhost/myApp/view.do?gf844gf4g8fg4f

いくつかのグーグルの後、私はこれを見つけました: http://www.avedatech.com/Products/QueryCrypt/index.jsp

しかし、コードを改ざんできないため、私のニーズには合いません。

私の考えは、バルブをhttp://localhost/myApp で始まるすべてのクエリの前 (URL を暗号化) に配置し、別のクエリを後 (復号化) に配置することでした。

残念ながら、私のアプリケーションは明確な URL を書き込むため、サーバー レベルでプロセスを挿入しようとしています。その結果、ブラウザーに表示される URL はすべて読み取り不能になります (Javascript が URL を読み取ることができなくても問題ありません)。

リードは既にカバーされています :) : 私たちはすでに HTTPS を使用しています URL の末尾にハッシュを配置し、計算されたハッシュが等しいことを確認し、一致しない場合はアクセスを拒否します。これにより、改ざんは防止されますが、変数がユーザーに表示されることはありません。

これは実現可能ですか?

ご協力ありがとうございました。

0 投票する
1 に答える
2494 参照

tomcat - ApacheTomcatにValveを追加する方法

org.apache.catalina.valves.ValveBaseクラスを拡張し、inovoke()メソッドを実装することにより、ApacheTomcat用のValveを作成しました。今度はそれをTomcatに追加して実行したいですか?手順を教えてください。

0 投票する
1 に答える
187 参照

tomcat - Tomcat での実行時に httpsession に保存されたマップから値を取得する方法

Tomcat を使用すると、適切なバルブを構成することで、興味深い情報の山をログファイルにダンプできます。

例えば:

意味:

  • %s - 応答の出力 HTTP ステータス コード
  • %b - HTTP ヘッダーを除く送信バイト数を出力するか、ゼロの場合は「-」
  • %I - スレッド ID

%{myname}s は、セッションに保存されている属性 myname の値を出力することを意味します。

すべて良い。セッションにハッシュマップが保存されている場合は、次のようにして出力できます。

詳細については、 http://tomcat.apache.org/tomcat-5.5-doc/config/valve.htmlを参照してください。

しかし、マップ全体ではなく、特定のキーの値を出力したいだけです。私が試してみました:

しかし、これはうまくいきません。これを行う方法はありますか?

0 投票する
2 に答える
680 参照

web-services - Tomcat バルブを使用して受信した SOAP メッセージを抽出する方法は何ですか?

org.apache.catalina.valves.ValveBaseクラスを拡張して、Apache Tomcat 用のカスタム Valve を作成しようとしています。方法がありpublic abstract void invoke(Request request,Response response)ます。私のTomcatコンテナにはAxis2があり、Webサービスがホストされています。したがって、私の問題は、このカスタム バルブを使用してその Web サービスへの SOAP メッセージを抽出する方法を見つけることです。org.apache.catalina.connector.Requestでは、引数とを使用して SOAP メッセージを取得する方法は何org.apache.connector.Responseですか?

0 投票する
1 に答える
290 参照

tomcat - Tomcat Web アプリ専用のバルブを使用できますか

Tomcat コンテナーでホストされている Web アプリをいくつか持っています。Web アプリ専用の Valve を使用できますか? 道を教えてください。

0 投票する
2 に答える
5246 参照

java - ログインtomcatにアクセスするためにリクエストパラメータを取得しようとしています

特定のHTTPリクエストがWebサイトに送信される頻度を調査しようとしています。リクエストはPOSTであり、。という名前のパラメータがあります"_method"。私はこれをfirebugがネットを乗り越えているのを見ることができます。

このパラメーターの値を確認する必要がある"_method"ため、ドキュメントhttp://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access_Log_Valveに従って、バルブのTomcatアクセス構成に以下を追加します。

ただし、アクセスログには表示されません。

アンダースコアのせいなのかしら?

パラメータ名は変更できませんのでご注意ください。

0 投票する
1 に答える
492 参照

java - WebApp が Tomcat バルブによってデータ セットを取得するにはどうすればよいですか?

JSF2 バッキング Bean (またはサーブレット) のカスタム Tomcat バルブによって設定された値を取得しようとしています。これを行う方法がわかりません。また、Google を使用した例も見つかりません。

背景: 私の JSF2 Web アプリでは、タイムゾーン属性を各ユーザーに追加する必要があります。これを実装する最も簡単な方法は、タイムゾーン ドロップダウンをユーザー プロファイル ページに追加して、各ユーザーが適切なタイムゾーンを選択できるようにすることです。ただし、これは自動化できる可能性があります。これは、ブラウザの JavaScript がタイムゾーンを自動的に計算できるためです。

そのため、この値を提供する Tomcat ログイン ページに新しいパラメーターを配置しました。この値は、Web アプリがログイン時に取得できます。Tomcat フォーム認証メカニズムは、(j_security_check への HTTP POST を介して) ログイン ページの処理を担当します。これをキャッチするために Java EE サーブレット フィルターを実装しましたが、Tomcat のログイン メカニズムはフィルターを回避するため、このコードは j_security_check への POST を認識しません。

Tomcat Valve を実装したので、j_security_check への POST を正常にキャッチできます。コードでは、タイムゾーンの値を抽出して配置します...どこに?

バルブ (TOMCAT_HOME/lib に配置する必要があります) には、通常の JSF2 コードとは異なるクラスローダーがあることを理解しています。これは、JSF2 コードからバルブの静的メンバーにアクセスできないことを意味します。

標準のTomcatバルブのソースコードに触発されて、バルブ内でこれを試しました:

しかし、私の JSF2 マネージド Bean では、org.apache.catalina.Session への参照を取得できません。

このコードは、org.apache.catalina.Session にアクセスできない StandardSessionFacade タイプのオブジェクトを返します。

FacesContext.getCurrentInstance().getExternalContext().getSession(false);

デバッグ モードで実行すると、org.apache.catalina.Session を見つけることができましたが、「メモ」フィールドは実際には空です。

また、Tomcat はログインに 1 つのセッションを使用し、その後新しいセッションを作成する可能性があると思います (おそらくSession Fixation Protectionに関連しています)。もしこれが本当なら、問題は複雑になると思います。

Tomcat の達人で、何か素晴らしいアイデアを持っている人はいますか? 単純なサーブレットのソリューションも受け入れられるでしょう。それを適応させることができると確信しているからです。

0 投票する
0 に答える
1201 参照

tomcat - Manager を Tomcat シングル サインオンから除外する

Tomcat サーバー sans Apache で SSO に JAAS を使用する。SSO は、いくつかの関連アプリケーションへのアクセスを制御し、うまく機能します。最近、Ant から Maven への移行を開始しました。Maven 用の Tomcat プラグインを使用するために、以前は必要のなかった Tomcat Manager アプリケーションをセットアップする必要がありました。サーバー上の他のWebアプリと一緒に、BASIC認証またはCLIENT-CERT認証の両方で起動して実行することができました.

私が抱えている問題は、ユーザーがマネージャーで認証されると、他の webapps のセッションがドロップされることです-webapp への IE ログイン、Manager へのログイン、webapp の更新、ログインページへのリダイレクト。

コンテキスト レベルで SSO バルブを定義し、ホスト レベルでレルムを定義することで、この重複を軽減することができました。これにより、ブラウザーを介して Web アプリケーション間を移動するときに SSO が引き続き機能します。ただし、問題の他のWebアプリケーションにアクセスするまで、クロスコンテキストAJAXリクエストと「ユーザーがログインしていません」というエラーが返されます。Manager のこのアプローチ認証を使用すると、他の Web アプリケーションから効果的に分離されました。

つまり、JAAS 認証モジュールを使用して Web アプリケーションで SSL/データベース認証を介して SSO を使用できるようにする最善の方法を探していますが、Tomcat に Manager を SSO から除外させます。Webapps 1、2、3 の場合は SSL 経由の IE SSO ですが、UN/PW 認証は Manager の SSO とは独立しており、認証は 2 つの間で独立しています。

これを行う方法はありますか?

現在の構成:

この構成を使用すると、すべての webapps と Manager が SSO の制御下に置かれ、上記の重複が発生します。IE は SSL 経由で webapp1 にログインし、次に UN/PW 経由で Manager にログインし、webapp1 を更新してログイン ページにリダイレクトします。

SSO バルブを Web アプリケーションのコンテキストに移動すると、この問題は解決しますが、クロス コンテキスト AJAX 要求に対して「ユーザーがログインしていません」という応答が発生します。

0 投票する
2 に答える
14035 参照

java - Tomcat: ログで「文字のデコードに失敗しました」を取得します。悪意のある攻撃の可能性?

Tomcat インスタンスが応答を停止しました (強制終了して再起動した後、正常に動作し始めました)。ログ メッセージでは、応答を停止する直前に、誰かが無効な要求でスパムしているように見えます。以下は、ログ ファイルからの抜粋です。

ログにはかなりの量がありました。誰かが前に似たようなものを見たことがありますか? これは悪意のある攻撃ですか、それとも Tomcat インスタンスが暴走したり狂ったりしたのでしょうか?

より実際には、これらのようなリクエストを検出し、元の IP アドレスを一時的に禁止するために、たとえばValveやでできることはありますか? FilterTomcat は文字化けしたパラメーターを最初からデコードできないため、無意味なパラメーター名を探して、見つかった場合に要求を拒否することはできないと思います。

編集

同じ問題が再び発生し、今回はスレッドダンプをキャプチャしました。かなり長いです (実際には、全体を含めるには長すぎます)。

頭のてっぺんから、異常な数の待機中の HTTP デーモン スレッドがあるように見えます。