6

データベースをレルムとして使用してフォームベースの認証を有効にしたいのですが、Tomcat 6でTomcatマネージャーとして認証しようとすると、常にそのメッセージが表示されます。既にテーブルuser_nameとuser_rolesを作成し、username(blue)をadminにマップしています。 mysqlのuser_rolesテーブルのロールとしてマネージャーを使用しますが、それでも認証できません。私はすでにファイルにレルムタグを再作成しましたserver.xml

 <Realm className      = "org.apache.catalina.realm.JDBCRealm"
        debug          = "99" 
        driverName     = "com.mysql.jdbc.Driver"
        connectionURL  = "jdbc:mysql://localhost:3306/mail" 
        connectionName = "root" 
        userTable      = "users"
        userNameCol    = "user_name"
        userCredCol    = "user_pass"
        userRoleTable  = "user_roles" 
        roleNameCol    = "role_name" 
 /> 

誰かが私が何をしているのか、そしてデータベースを使用してフォームベースの認証を有効にする方法を教えてもらえますか?

  1. ユーザーを管理者と管理者の両方として「青」と宣言しました。Tomcat管理者ページにログインしようとすると、次のメッセージが表示されます。

    HTTPステータス403-要求されたリソースへのアクセスが拒否されました

  2. 間違ったユーザー名またはパスワードを入力すると、tomcatはそのメッセージを表示する代わりに、ユーザー名とパスワードを再度要求します。

4

4 に答える 4

3

私はこれを自分で試したことはありません。TOMCAT_HOME_DIR\webapps\manager\WEB-INF\web.xmlの auth-method を FORM に設定された auth-method を指すように変更してみてください。レルム名は関係ありません。

<login-config>   <auth-method>FORM</auth-method>   <realm-name>Tomcat Manager Application</realm-name> </login-config>

また、確認してください。server.xml には Realm を 1 つだけ保持する必要があります。デフォルトの Realm はコメントアウトしてください。

于 2010-03-25T09:59:54.470 に答える
3

HTTP ステータス 403 (要求されたリソースへのアクセスが拒否されました) は、間違った資格情報を入力しすぎたか、構成に問題があることを示している可能性があります。

考えられる問題の 1 つは、ブラウザーに認証資格情報がキャッシュされている可能性があることです。これは、BASIC 認証を使用すると、ブラウザーはサイトへの初回認証時にのみ資格情報の入力を求められるためです。認証が成功すると、再度プロンプトが表示されることはなく、ブラウザーに再度プロンプトを表示するよう強制するため、ブラウザーを完全に閉じる (または別の Web ブラウザーで試す) 必要がある場合があります。

構成ファイルを変更していない場合はconf/tomcat-users.xml、インストール内のファイルを調べてください ( locate tomcat-users.xml)。そのファイルには、Tomcat webapp を使用できるようにする資格情報が含まれている必要があります。

たとえば、manager-gui ロールをtomcat、パスワードがという名前のユーザーs3cretに追加するには、上記の設定ファイルに次を追加します。

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

次に、webapps マネージャーにアクセスできます/manager/html(例: 構成変更後のリロード)。

続きを読む:マネージャー アプリのハウツー

独自のセキュリティ制約を ( で) 実装しようとしている場合は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。要素には、 、、およびの 3 つのsecurity-constraint要素が含まれます。web-resource-collection は、認証が必要なアプリケーションの部分を指定します。は、アプリケーション全体で認証が必要であることを示します。auth-constraint は、保護されたリソースにアクセスするためにユーザーが持つ必要がある役割を指定します。user-data-constraint の transport-guarantee は、またはです。に設定しました。これは、保護されたリソースにアクセスしようとしたときに へのリダイレクトが不要であることを意味します。web-resource-collectionauth-constraintuser-data-constraint/*NONECONFIDENTIALINTEGRALNONESSL

また、次の行があることを確認してください。

<Realm className="org.apache.catalina.realm.MemoryRealm" />

あなたのconf/server.xmlEngineセクション内)。

それでも問題が解決しない場合は、次を試してください。

  • 正しい XML ファイルを編集しているかどうかを確認します。
  • XML ファイルを検証しcatalina.sh configtestますxmlstarlet val /etc/tomcat?/*.xml /var/lib/tomcat7/webapps/*/WEB-INF/*.xml
  • あなたの<url-pattern>一致<security-constraint>またはに設定/*,
  • Tomcat のログを確認してください (例: /var/log/tomcat7)。
  • または(INFO、SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST、または ALL) でログレベル( INFO-> FINE/ FINEST) を上げ、Tomat を再起動してログを確認します。logging.propertieslog4j.properties
  • ログに何もない場合は、正しいログをチェックしているかどうかを確認してください ( sudo lsof | grep -E "java.*(out|txt|log)$"tail -f /var/log/tomcat7/*.log /var/log/tomcat7/*.txt /var/log/tomcat7/*.out)、
  • log4jロギング システムを使用する場合は、libs を適切なフォルダに配置して構成することにより、適切に初期化されていることを確認してください。log4j.properties
  • cURL で BASIC 認証をテストします。

    • 資格情報なし:

      $ curl -vv http://example.com:8983/solr/
      

      通常、リクエストはHTTP/1.1 401 Unauthorizedを返し、" WWW-Authenticate " ヘッダーは基本認証が必要であることを示します。

    • 資格情報を使用:

      $ curl -vv -u tomcat:tomcat http://example.com:8983/solr/
      

      リクエストは「Authorization」ヘッダーを付けて送信し、認証する必要があります。資格情報が無効な場合は、HTTP/1.1 401 Unauthorizedを取得する必要があります。ユーザーが認証されているが、リソースを表示するアクセス権がない場合、取得する必要があるのはHTTP/1.1 403 Forbiddenです。

  • 認証試行の失敗が多すぎるため、ユーザー ロックアウト メカニズムがアクティブ化されている可能性があります( LockOutRealm )。

  • Tomcat を手動で停止して実行します (: と同じ方法でps wuax | grep ^tomcat)。例:

    # ps wuax | grep ^tomcat
    tomcat7    884  /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties ... org.apache.catalina.startup.Bootstrap start
    $ /etc/init.d/tomcat7 stop
    $ sudo sudo -u tomcat7 /usr/lib/jvm/java-7-openjdk-amd64/bin/java ...  -Dorg.apache.catalina.level=FINEST org.apache.catalina.startup.Bootstrap start
    

    catalina.shまたは、次のようなスクリプトを使用して開始します。

    $ . /etc/default/tomcat7
    $ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 CATALINA_HOME=/usr/share/tomcat7 CATALINA_BASE=/var/lib/tomcat7 CATALINA_PID=/var/run/tomcat7.pid CATALINA_TMPDIR=/tmp LOGGING_CONFIG="-Dorg.apache.catalina.level=FINEST"
    $ /usr/share/tomcat7/bin/catalina.sh run
    

    またはデバッグモードで:

    $ JPDA_SUSPEND=y catalina.sh jpda start
    

    catalina.outログを確認してください。

  • 最後の手段は、次の方法でプロセスをデバッグすることですsudo strace -fp PID

于 2015-04-09T22:37:45.380 に答える
0

BASIC 認証を使用すると、ポップアップ ウィンドウの代わりに、同じエラー「HTTP ステータス 403 - 要求されたリソースへのアクセスが拒否されました」が表示されました。カスタマイズ ロール (myname) を使用しましたが、機能しませんでした。そこで、役割を (manager-gui) に設定し、ユーザー名とパスワードを割り当てました。設定した後、必要な結果が得られました。manager-gui を役割として使用してから、再試行してください。

于 2014-06-24T05:59:46.737 に答える
0

「tomcat」という名前の別のユーザー ロールを定義し、ユーザー「blue」をこのグループのメンバーにする必要があります。

web.xml ファイルで、この制約に必要な役割グループの名前を変更できます。

<auth-constraint>
    <role-name>tomcat</role-name>
</auth-constraint>
于 2011-05-24T14:41:45.560 に答える