Tomcat で htpasswd 保護を使用するにはどうすればよいですか?
-
09-09-2019 - |
質問
Apache の htpasswd コマンドを使用してユーザー データベース ファイルをすでに作成しました。このファイルは現在、Apache や Subversion などの他のいくつかのアプリケーションで使用されています。
のユーザーは次のように作成されます。
htpasswd /path/to/users.htpasswd peter
このユーザー ファイルはディレクトリごとではなくグローバルです。
Tomcat 6 でこれと同じファイルをセキュリティ レルムとして使用するにはどうすればよいですか?
解決
次の 2 つのオプションがあります。
Tomcat へのフロントエンドとして Apache を使用し (mod_jk または mod_proxy_ajp を使用)、Apache が認証を行います。その方法の詳細については、こちらをご覧ください ここ
Tomcat に認証を行わせたい場合は、htpasswd ファイル以外のものを使用する必要はありません。ユーザーの認証情報を保存するには、データベース、JNDI/LDAP、XML ファイル、JAAS プロバイダーを使用する 4 つの方法があります。すべてのオプションについては、 レルム構成のハウツー.
他のヒント
htpasswd に最も似ているのは、 メモリレルム。私自身、簡単な使用例を見つけるのに苦労したので、ここに簡単なサンプルコードを投稿します。
tomcat-users.xml でロール、ユーザー名、パスワードを設定します。
web.xml には次のようなものが含まれている必要があります。
<security-constraint> <web-resource-collection> <web-resource-name> My Protected WebSite </web-resource-name> <url-pattern> /* </url-pattern> <http-method> GET </http-method> <http-method> POST </http-method> </web-resource-collection> <auth-constraint> <!-- the same like in your tomcat-users.conf file --> <role-name> test </role-name> </auth-constraint> </security-constraint> <login-config> <auth-method> BASIC </auth-method> <realm-name> Basic Authentication </realm-name> </login-config> <security-role> <description> Test role </description> <role-name> test </role-name> </security-role>
これをserver.xmlファイルに追加します。
<Realm className="org.apache.catalina.realm.MemoryRealm"></Realm>
Tomcat Web アプリへのアクセスを保護するには、単純なセキュリティ制約 (例:で /var/lib/tomcat7/webapps/*/WEB-INF/web.xml
) 以下のように (前に追加するだけです) </web-app>
エンディング):
<!-- This security constraint protects your webapp interface. -->
<login-config>
<!-- Define the Login Configuration -->
<auth-method>BASIC</auth-method>
<realm-name>Webapp</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<!-- Specifying a Secure Connection -->
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL (forced SSL), INTEGRAL, or NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- Authorization, see: tomcat-users.xml -->
<security-role>
<role-name>*</role-name>
</security-role>
login-config 要素には、
auth-method
要素。使用する認証方法を指定します。BASIC
. 。のsecurity-constraint
要素には 3 つの要素が含まれます。web-resource-collection
,auth-constraint
, 、 そしてuser-data-constraint
. 。web-resource-collection は、認証を必要とするアプリケーションの部分を指定します。の/*
アプリケーション全体で認証が必要であることを示します。auth-constraint は、保護されたリソースにアクセスするためにユーザーが持つ必要のあるロールを指定します。ユーザーデータ制約のトランスポート保証は次のようにすることができます。NONE
,CONFIDENTIAL
またはINTEGRAL
. 。に設定しましたNONE
, 、これは、にリダイレクトすることを意味しますSSL
保護されたリソースにアクセスしようとする場合は必要ありません。
また、次の行があることを確認してください。
<Realm className="org.apache.catalina.realm.MemoryRealm" />
あなたの中に conf/server.xml
(Engine
セクション)。
設定ファイルを変更していない場合は、ファイルを調べてください。 conf/tomcat-users.xml
インストール内 (locate tomcat-users.xml
)。このファイルには、Tomcat Web アプリを使用できるようにするための資格情報が含まれている必要があります。
たとえば、manager-gui ロールを次の名前のユーザーに追加するには、 tomcat
のパスワードで s3cret
, 、上記の構成ファイルに以下を追加します。
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
その後、次から Web アプリ マネージャーにアクセスできます。 /manager/html
(例えば。設定変更後のリロード)。
続きを読む: マネージャーアプリのハウツー.
次に、Tomcat を再起動すると、Web アプリにアクセスするときに、正しい資格情報の入力を求められるはずです。
以下も参照してください。
- Java での HTTP 基本認証 オラクルのサイトで
- Java での認証メカニズムの指定 オラクルのサイトで
- レルム構成のハウツー Apache Tomcat サイトで
- Tomcat でのロールベースのセキュリティのセットアップ
- Tomcat で基本認証を使用するにはどうすればよいですか?