質問

Apache の htpasswd コマンドを使用してユーザー データベース ファイルをすでに作成しました。このファイルは現在、Apache や Subversion などの他のいくつかのアプリケーションで使用されています。

のユーザーは次のように作成されます。

htpasswd /path/to/users.htpasswd peter

このユーザー ファイルはディレクトリごとではなくグローバルです。

Tomcat 6 でこれと同じファイルをセキュリティ レルムとして使用するにはどうすればよいですか?

役に立ちましたか?

解決

次の 2 つのオプションがあります。

  1. Tomcat へのフロントエンドとして Apache を使用し (mod_jk または mod_proxy_ajp を使用)、Apache が認証を行います。その方法の詳細については、こちらをご覧ください ここ

  2. Tomcat に認証を行わせたい場合は、htpasswd ファイル以外のものを使用する必要はありません。ユーザーの認証情報を保存するには、データベース、JNDI/LDAP、XML ファイル、JAAS プロバイダーを使用する 4 つの方法があります。すべてのオプションについては、 レルム構成のハウツー.

他のヒント

htpasswd に最も似ているのは、 メモリレルム。私自身、簡単な使用例を見つけるのに苦労したので、ここに簡単なサンプルコードを投稿します。

  1. tomcat-users.xml でロール、ユーザー名、パスワードを設定します。

  2. 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>
    
  3. これを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 アプリにアクセスするときに、正しい資格情報の入力を求められるはずです。

以下も参照してください。

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