this に従ってTomcat 8をセットアップしました。次のTomcat-users.xmlファイルがあります。
<?xml version="1.0" encoding="UTF-8"?>
<Tomcat-users xmlns="http://Tomcat.Apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Tomcat.Apache.org/xml Tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="notadmin" password="not_real_pass" roles="manager-gui"/>
<user username="cargo" password="not_real_pass" roles="manager-script"/>
<Tomcat-users/>
Managerアプリにアクセスしようとすると、ユーザー名とパスワードの入力を求められず、403で拒否されます。
構成で見逃したものは何ですか?
Edit1:完全なxmlファイルを追加しました。
正解を見つけることができます こちら
この問題は、Unixマシンで言及されたチュートリアルを実行中に再現できるようです。また、作者がTC 8.0.33を使用していることにも気付きました。
Win(およびOSX)には、少なくとも私の環境ではこのような問題はありません:
Server version: Apache Tomcat/8.5.4
Server built: Jul 6 2016 08:43:30 UTC
Server number: 8.5.4.0
OS Name: Windows 8.1
OS Version: 6.3
Architecture: AMD64
Java Home: C:\TOOLS\jdk1.8.0_101\jre
JVM Version: 1.8.0_101-b13
JVM Vendor: Oracle Corporation
CATALINA_BASE: C:\TOOLS\Tomcat\Apache-Tomcat-8.5.4
CATALINA_HOME: C:\TOOLS\Tomcat\Apache-Tomcat-8.5.4
Tomcat-users.xml
がロールを追加して変更された後、ユーザーTomcat Web Application Manager
はTomcat/8.5.4
でアクセスできます。
これはうまくいくかもしれません。CATALINA_HOME/webapps/manager/META-INF/context.xml
ファイルを見つけて、バルブの周りにコメントマーカーを追加します。<Context antiResourceLocking="false" privileged="true" > <!-- <Valve className="org.Apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --> </Context>
このページで詳細を確認できます。
私のために働いた解決策は、context.xml
と$CATALINA_HOME/webapps/manager/META-INF
の両方で$CATALINA_HOME/webapps/Host-manager/META-INF
ファイルを編集することです。ここで私のIPは123.123.123.123
です。
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.Apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|123.123.123.123" />
</Context>
Ubuntu 8.5にTomcat 8.5をインストールし、$CATALINA_HOME/conf/Tomcat-users.xml
を編集しました:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="myuser" password="mypass" roles="admin-gui,manager-gui"/>
ただし、localhost:8080/manager/html
ファイルを編集するまで、Tomcat Web Application Manager(localhost:8080/Host-manager/html
)とTomcat Virtual Host Manager(context.xml
)の両方にアクセスできませんでした。
こちらの便利なリンク: 異なるホストからTomcat Managerアプリにアクセス
Tomcatバージョン8以降、manager/html URLはlocalhost以外の誰もアクセスできなくなります。
/ manager/html urlにアクセスするには、マネージャーアプリのcontext.xmlで以下の変更を行う必要があります。 1./ Apache-Tomcat-8.5.23/webapps/manager/META-INFの場所に移動し、context.xml
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.Apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
......
</Context>
次のファイルを変更する必要があります
$CATALINA_BASE/conf/Catalina/localhost/manager.xml
および次の行を追加
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.Apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
これにより、特定のIPへのアクセスを許可する場合は、allow="^.*$"
の代わりに以下の値を使用して、Tomcatに任意のマシンからアクセスできます。
<Valve className="org.Apache.catalina.valves.RemoteAddrValve" allow="192\.168\.11\.234" />
上記のいずれにも当てはまらない場合は、Tomcatがwebapps(chown ...)の下のmanagerフォルダーにアクセスできることを確認してください。メッセージはまったく同じメッセージであり、問題を特定するのに2時間かかりました。 :-)
私と同じ問題のためにここに来た誰かのためだけに。
fadeの答えは私のために働いた。 8.0.30から8.5.5に移行しましたが、違いは<8.0.30> /manager/META-INF/context.xmlのValveがすでにコメントアウトされていたことですfromtarファイルですが、8.5.5 tarでは非コメント化されていました。
403応答でこの重要なメッセージを読むことができませんでした。
デフォルトでは、ManagerはTomcatと同じマシンで実行されているブラウザからのみアクセスできます。この制限を変更する場合は、Managerのcontext.xmlファイルを編集する必要があります。
そしてこれも読めませんでした:
R1734267以降、RemoteAddrValve。はManagerおよびHostManager Webアプリケーションでデフォルトで設定されます。この機能は9.0.0.M4および8.5.0以降に存在します。
「」のようなパスワードが設定されているデフォルトの構成のコメントを愚かにコメント解除しました。 Tomcatはこのファイルの解析に失敗し(「<」のため)、追加した他の設定は機能しません。
私の場合、web.xmlで定義されたセキュリティ制約でした。 Tomcat-users.xml
ファイルで使用するのと同じ役割を持っていることを確認してください。
たとえば、これはすぐに使用可能なタグの1つであり、標準のTomcat-users.xmlで機能します。
<security-constraint>
<web-resource-collection>
<web-resource-name>HTML Manager interface (for humans)</web-resource-name>
<url-pattern>/html/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-gui</role-name>
</auth-constraint>
</security-constraint>
私の場合、管理者が別のロール名を使用していたため、マネージャーにアクセスできませんでした。
/Apache-Tomcat-9.0.20/Tomcat-users.xmlでファイルを開いてユーザーを作成してください。ユーザーが作成されているかどうかを確認してください。
<user username="Tomcat" password="Tomcat" roles="admin-gui,manager-gui,manager-script" />
/Apache-Tomcat-9.0.20/webapps/manager/META-INF/に移動して、context.xmlを開いて、コンテキストタグの例ですべてをコメントします。
<Context antiResourceLocking="false" privileged="true" >
<!--Valve className="org.Apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /-->
</Context>
以下のコンテンツをファイルTomcat-users.xml
にコピーします
<?xml version='1.0' encoding='utf-8'?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.Apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<Tomcat-users xmlns="http://Tomcat.Apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Tomcat.Apache.org/xml Tomcat-users.xsd"
version="1.0">
<!--
NOTE: By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary. It is
strongly recommended that you do NOT use one of the users in the commented out
section below since they are intended for use with the examples web
application.
-->
<!--
NOTE: The sample user and role entries below are intended for use with the
examples web application. They are wrapped in a comment and thus are ignored
when reading this file. If you wish to configure these users for use with the
examples web application, do not forget to remove the <!.. ..> that surrounds
them. You will also need to set the passwords to something appropriate.
-->
<!--
<role rolename="Tomcat"/>
<role rolename="role1"/>
<user username="Tomcat" password="<must-be-changed>" roles="Tomcat"/>
<user username="both" password="<must-be-changed>" roles="Tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="notadmin" password="not_real_pass" roles="manager-gui"/>
<user username="cargo" password="not_real_pass" roles="manager-script"/>
</Tomcat-users>
私はテストしましたが、うまくいきます!
同じチュートリアルに従いましたが、数か月後、マネージャーアプリを使用しようとすると「403アクセスが拒否されました」というエラーが表示されました。この場合、アドレスバーでipaddress:8080を使用していましたが、Tomcat Managerアプリはユーザー/パスワードの入力を求めませんでした。 localhost:8080の場合、エラーは「401」で、ユーザー名とパスワードを要求するダイアログボックスが表示されましたが、ユーザーは認識されませんでした。
私は幸運なく以前の提案/解決策をすべて試しました。 私が見つけた唯一の方法は、チュートリアル全体を繰り返してファイルも上書きすることでした。完了したら、webappsディレクトリに古いデプロイされたプロジェクトが再び見つかりました。これで、Apache Tomcat/8.5.16 Managerアプリが再び機能します。私はTomcatユーザーの初心者なので、何が起こったのか分かりません
Tomcatをdockerにインストールしているときに同じ問題が発生していました。 「127.\d +。\ d +。\ d + | :: 1 | 0:0:0:0:0:0:0:1:1123.123.123.123」の代わりに「^。* $」を追加して解決しました
Tomcatを再起動します。
正しい答えは、@ JaKuが指摘したとおりです。 Tomcatは、ローカルホストへのアクセスを制限して安全にしています。これはあるべき姿です。 Tomcatへのポート転送は、できればSSHなどの安全な環境で行うのが正しい方法です。