アプリケーションを変更せずにTomcatのHttpServletRequest.getRemoteUser()から値を取得する

マーク:

(Java 6およびTomcat 6を使用)。

HttpServletRequest.getRemoteUser()アプリケーションのweb.xmlファイルを変更せずに、開発環境(localhost)で値を返す方法はありますか?

私が尋ねる理由は、アプリがリモート環境にデプロイされるときの認証の実装が、Webサーバーとプラグインツールによって処理されるためです。ローカルで実行しているので、プラグインツールや独立したWebサーバーはありません。Tomcat 6を使用しています。ローカルホストでの開発をサポートするためだけにアプリケーションにコードを追加しないようにしています。

リモートユーザーIDを設定したり、HTTPヘッダーなどからプルしたりするために、context.xmlまたはserver.xmlファイルに変更を加えることができるといいのですが。

パンケーキ:

Valveこれを実現する概念実証の実装を次に示します。

import java.io.IOException;
import java.security.Principal;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;

import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.realm.GenericPrincipal;
import org.apache.catalina.valves.ValveBase;

public class RemoteUserValve extends ValveBase {

    public RemoteUserValve() {
    }

    @Override
    public void invoke(final Request request, final Response response)
            throws IOException, ServletException {
        final String username = "myUser";
        final String credentials = "credentials";
        final List<String> roles = new ArrayList<String>();

            // Tomcat 7 version
        final Principal principal = new GenericPrincipal(username, 
                            credentials, roles);
            // Tomcat 6 version:
            // final Principal principal = new GenericPrincipal(null, 
            //              username, credentials, roles);


        request.setUserPrincipal(principal);

        getNext().invoke(request, response);
    }

}

(Tomcat 7.0.21でテスト済み。)

それをコンパイルし、jarの中に置き、jarをapache-tomcat-7.0.21/libフォルダーにコピーします。を変更する必要がありますserver.xml

<Host name="localhost"  appBase="webapps"
    unpackWARs="true" autoDeploy="true">

    <Valve className="remoteuservalve.RemoteUserValve" />
...

EngineContextコンテナの内部でも動作すると思います。

詳しくは:

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

変更せずにアプリケーションを再起動します

分類Dev

アプリケーションを再起動せずに、アプリケーションパレットのランタイムを変更する

分類Dev

ソースコードを変更せずにアプリケーションの洞察

分類Dev

日付を変更せずに1つのExcelアプリケーションからシートにコピーするVBAEXCEL

分類Dev

アプリケーションテーマを変更せずにTextInputLayoutレイアウトを使用する

分類Dev

システムを変更せずにアプリケーションをテストする

分類Dev

アプリケーションを再起動せずにAzureWebアプリの構成を変更することはできますか?

分類Dev

アプリケーションを再起動せずに動的にログレベルを変更する

分類Dev

Androidアプリケーションからチェックせずにデータベースの変更を認識する方法

分類Dev

アプリケーションを再起動せずにログレベルを変更する

分類Dev

Docker Compose:アプリケーションを再構築せずにCOMPOSE_PROJECT_NAMEを変更します

分類Dev

アプリケーションの実行を停止せずに、変更された単一のErlangモジュールをリロードできますか?

分類Dev

Webアプリケーションごとにtomcat web.xmlの場所を変更する方法

分類Dev

システムのDPI設定を変更せずに、Java SwingアプリケーションのDPI解像度を設定できますか?

分類Dev

再起動せずに構成の変更をサポートするようにアプリケーションを設計する

分類Dev

Google App Engine Flexアプリケーションの環境変数を変更し、再デプロイせずに再起動する方法

分類Dev

gitにすべての変更をコミットせずに、メインアプリケーションでRubyGemをテストします

分類Dev

別のアプリケーションでHttpRequestExceptionから値を取得する

分類Dev

アプリケーションを変更せずに、外部アプリケーションによって作成されたWebページを変更するにはどうすればよいですか?

分類Dev

その中の文字をスケーリングせずにスケールアニメーションでEditTextの幅を変更しますか?

分類Dev

Tomcatアプリケーションからエラーを取得するAngularアプリケーション

分類Dev

ランチャーショートカットを変更せずにアプリケーション/ウィンドウのラベルとアイコンを変更する

分類Dev

アップスケーリングせずに画像のサイズを変更

分類Dev

既存のGWTアプリケーションを変更する

分類Dev

C#アプリケーションが、connection.Open()を使用せずにMySqlからデータを取得するのはなぜですか?

分類Dev

itemChangedシグナルは、アイテムを変更せずにアプリケーションを起動すると機能します

分類Dev

WPFアプリケーションの変更を動的に反映する

分類Dev

実行時にアプリケーションのMainFormを変更する

分類Dev

スクロールせずに特定の値を更新するコンソールアプリケーション

Related 関連記事

  1. 1

    変更せずにアプリケーションを再起動します

  2. 2

    アプリケーションを再起動せずに、アプリケーションパレットのランタイムを変更する

  3. 3

    ソースコードを変更せずにアプリケーションの洞察

  4. 4

    日付を変更せずに1つのExcelアプリケーションからシートにコピーするVBAEXCEL

  5. 5

    アプリケーションテーマを変更せずにTextInputLayoutレイアウトを使用する

  6. 6

    システムを変更せずにアプリケーションをテストする

  7. 7

    アプリケーションを再起動せずにAzureWebアプリの構成を変更することはできますか?

  8. 8

    アプリケーションを再起動せずに動的にログレベルを変更する

  9. 9

    Androidアプリケーションからチェックせずにデータベースの変更を認識する方法

  10. 10

    アプリケーションを再起動せずにログレベルを変更する

  11. 11

    Docker Compose:アプリケーションを再構築せずにCOMPOSE_PROJECT_NAMEを変更します

  12. 12

    アプリケーションの実行を停止せずに、変更された単一のErlangモジュールをリロードできますか?

  13. 13

    Webアプリケーションごとにtomcat web.xmlの場所を変更する方法

  14. 14

    システムのDPI設定を変更せずに、Java SwingアプリケーションのDPI解像度を設定できますか?

  15. 15

    再起動せずに構成の変更をサポートするようにアプリケーションを設計する

  16. 16

    Google App Engine Flexアプリケーションの環境変数を変更し、再デプロイせずに再起動する方法

  17. 17

    gitにすべての変更をコミットせずに、メインアプリケーションでRubyGemをテストします

  18. 18

    別のアプリケーションでHttpRequestExceptionから値を取得する

  19. 19

    アプリケーションを変更せずに、外部アプリケーションによって作成されたWebページを変更するにはどうすればよいですか?

  20. 20

    その中の文字をスケーリングせずにスケールアニメーションでEditTextの幅を変更しますか?

  21. 21

    Tomcatアプリケーションからエラーを取得するAngularアプリケーション

  22. 22

    ランチャーショートカットを変更せずにアプリケーション/ウィンドウのラベルとアイコンを変更する

  23. 23

    アップスケーリングせずに画像のサイズを変更

  24. 24

    既存のGWTアプリケーションを変更する

  25. 25

    C#アプリケーションが、connection.Open()を使用せずにMySqlからデータを取得するのはなぜですか?

  26. 26

    itemChangedシグナルは、アイテムを変更せずにアプリケーションを起動すると機能します

  27. 27

    WPFアプリケーションの変更を動的に反映する

  28. 28

    実行時にアプリケーションのMainFormを変更する

  29. 29

    スクロールせずに特定の値を更新するコンソールアプリケーション

ホットタグ

アーカイブ