Mac OS X 10.7用のTomcat 7.0.22でManagerアプリにログインしようとしています。ここに私が得ているエラーがあります: http://f.cl.ly/items/421q1K3f1i0X1H1M181v/so.tiff
401 Unauthorized
You are not authorized to view this page. If you have not changed any configuration files, please examine the file conf/Tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp.
For example, to add the manager-gui role to a user named Tomcat with a password of s3cret, add the following to the config file listed above.
<role rolename="manager-gui"/>
<user username="Tomcat" password="s3cret" roles="manager-gui"/>
これをTomcat-users.xmlに追加しましたが、まだ同じユーザー名/パスワードを使用していません。
<Tomcat-users>
<role rolename="manager-gui"/>
<user name="Tomcat" password="s3cret" roles="standard,manager-gui"/>
</Tomcat-users>
申し訳ありませんが、明らかな質問をする必要があります。Tomcatを再起動しましたか?
それでもうまくいかない場合は、ロールに「admin-gui」を追加してみてください。
<user name="Tomcat" password="s3cret" roles="admin-gui,standard,manager-gui"/>
OK、私もこのエラーがありました。バグを見つけることができなかった、バグを見つけることができなかった、バグを見つけることができなかった私の「Tomcat-users」ブロックはこのように見えました。
<Tomcat-users>
<role rolename="manager-gui"/>
<user name="Tomcat" password="s3cret" roles="standard,manager-gui"/>
</Tomcat-users>
最後にバグを見つけました。 XMLの編集を続けましたinside XMLコメントブロック:
<!--
<Tomcat-users>
<role rolename="manager-gui"/>
<user name="Tomcat" password="s3cret" roles="standard,manager-gui"/>
</Tomcat-users>
-->
DOH!
そのため、「<!-」と「->」を削除することを忘れないでください。
私もこの問題に遭遇しました。 Tomcat-users.xmlの内容は正しいのですが、Tomcatでファイルを読み取ることができませんでした。私はファイルのグループをTomcat7に変更し、Tomcatを再起動しました。
Tomcat-users.xmlのコンテンツは次のとおりです。
<?xml version='1.0' encoding='utf-8'?>
<Tomcat-users>
<user username="admin" password="admin" roles="manager-gui, admin-gui" />
</Tomcat-users>
明確にするために、Tomcat 7.xの時点でconf/Tomcat-users.xmlに追加する必要がある役割を以下に示します。コメントを保持したい場合でも、ファイルに(admin/adminでログインするために)必要なのはこれだけです:
<?xml version="1.0" encoding="UTF-8"?>
<Tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="admin" roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script"/>
</Tomcat-users>
ブラウザを確認してください。
WindowsでTomcatをローカルで実行していて、Chromeを使用してログインしようとしました。上記の提案はいずれも機能していないようです。最後に、気まぐれに、Firefoxを試して、ログインプロンプトが表示されました! Chromeを再起動して、もう一度試してみましたが、まだ何もしませんでした。 Chromeが付いたネットワークポリシーのネジが表示されます-ポップアップログインダイアログをブロックしている可能性があります。
Server.xmlの正確な行を確認してください
<Realm className="org.Apache.catalina.realm.LockOutRealm">
<Realm className="org.Apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
ナビディープ
誰かが私と同じ過ちを犯した可能性は低いですが、Tomcatのバージョンが2つある場合(またはインストールに手間取って、クリーンアップする必要があるファイルがある場合)は、正しいフォルダーにいることを確認してください。
私はC:\ Tomcat7 \の設定ファイルを見ていましたが、実行されていた実際のTomcatはC:\ Program Files\Apache Software Foundation\Tomcat 7.0 \にありました
同じエラーが発生し、users.xmlでパスワードを変更しました。解決しました。 &
や@
などの特殊な文字を使用する場合。機能しません。それを除く。
Tomcat 8を使用している場合、次のものが欠落している可能性があります。 Realms
とTomcat-users.xml
を更新した後、アプリのcontext.xml
も編集する必要があります。
デフォルトでは、Tomcatの新しいバージョンは、ManagerアプリとHost Managerアプリへのアクセスをサーバー自体からの接続に制限します。リモートマシンにインストールしているので、この制限を削除または変更することをお勧めします。これらのIPアドレスの制限を変更するには、適切なcontext.xmlファイルを開きます。
マネージャーアプリの場合:
/webapps/manager/META-INF/context.xml
ホストマネージャーアプリの場合:
/opt/Tomcat/webapps/Host-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>
この後、あなたは落ち着くはずです。
Windowsでは、別のTomcatインストール用にCATALINA_HOME環境変数が定義されていたため、新しいインストールフォルダーでスタートアップスクリプトを使用していても、それが表示されていました。したがって、CATALINA_HOMEを削除するだけで問題は解決しました。
Server.xmlでポートを8080から8088に変更するとうまくいきました。以下のコードを参照してください
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
また、Tomcat_HOMEおよびJava_HOME環境変数が正しく設定されていることを確認してください。
まったく同じエラーが発生していましたが、コネクタポートを8080から8081に変更して初めて機能し始めました。
以下は「Vanilla」インストール(またはZip/tarアーカイブ)で動作するはずです-Tomcat-users.xmlを(これに類似した)これに置き換えます:
<?xml version="1.0" encoding="UTF-8"?>
<Tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="abc" password="xyz" roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script"/>
</Tomcat-users>
同様の問題が発生しましたが、Google Chromeを複数回再インストール/設定しても、2019年5月14日10時30分(CST)にGoogle Chrome(バージョン73.0.3683.103)を使用してログインできません。
Xmlをいじり回した後でもこの問題が発生する場合は、Firefox/IEなどの別のブラウザーを使用してみてください。
@Davidの答えに情報を追加するだけです:
あなたが私のようなもので、Tomcat(rootなど)以外のグループに属するユーザーとホストにSFTPで接続し、Tomcat_users.xml
geditやVS Codeなどの一般的なエディターを使用すると、ファイルのグループは使用したユーザーに変更されます(おそらく新しいファイルが作成されたためです)。以下のように:
drwxr-x--- 2 root Tomcat 4096 Jun 21 11:41 ./
drwxr-xr-x 9 root Tomcat 4096 May 24 14:12 ../
-rw-r----- 1 root Tomcat 13531 Apr 28 03:34 catalina.policy
-rw-r----- 1 root Tomcat 7202 Apr 28 03:34 catalina.properties
-rw-r----- 1 root Tomcat 1400 Apr 28 03:34 context.xml
-rw-r----- 1 root Tomcat 1149 Apr 28 03:34 jaspic-providers.xml
-rw-r----- 1 root Tomcat 2313 Apr 28 03:34 jaspic-providers.xsd
-rw-r----- 1 root Tomcat 3850 Apr 28 03:34 logging.properties
-rw-r----- 1 root Tomcat 7511 Apr 28 03:34 server.xml
-rw-r----- 1 root root 2342 Jun 21 11:41 Tomcat-users.xml
-rw-r----- 1 root Tomcat 2633 Apr 28 03:34 Tomcat-users.xsd
-rw-r----- 1 root Tomcat 170202 Apr 28 03:34 web.xml
たぶん、Tomcatの私の初期セットアップは少し無頓着だったかもしれません...しかし、上記の動作により、Tomcatは編集されたファイルへのアクセスを失います。結果は401 Unauthorizedになります。
問題を回避するための多くのオプションがあります。しかし、それらのどれがベストプラクティスであるかはわかりません。
私の場合、<Engine><Host>...</Host></Engine>
に複数のcontext.xml
セクションがあり、<Realm className="org.Apache.catalina.realm.LockOutRealm">...</Realm>
を各<Engine>...</Engine>
セクションにコピーして貼り付ける必要がありました。別のEngine
の一部であったこれらのホストの1つ。
アプリのMETA-INF/context.xml
のIPアドレス制限に関する@swapnil chaudhariからの回答も役立ちますが、サーバーのserver.xml
でContext
をオーバーライドする方が有益であることがわかりました。
最後に、Engines
のそれぞれに対して次のようなものがあります。
<Engine name="CatalinaMyUniqueEngine"
defaultHost="MyUniqueHost">
<Realm className="org.Apache.catalina.realm.LockOutRealm">
<Realm className="org.Apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="MyUniqueHost"
appBase="/opt/Tomcat/webapps/MyUniqueHost"
unpackWARs="true" autoDeploy="true">
<Context path="/manager" privileged="true" antiResourceLocking="false"
docBase="manager">
<!-- Wider allowance than the default.
Or you can remove to allow all IPs, which probably isn't
a good idea. -->
<Valve className="org.Apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1|10\.244\.\d+.\d+" />
</Host>
</Engine>
docBase
はappBase
に相対的です。 /opt/Tomcat/webapps/MyUniqueHost
には、システムのパッケージマネージャー(Debianベース)によってインストールされたマネージャーアプリケーションへのシンボリックリンクがあり、/usr/share/Tomcat8-admin/manager
に配置されています。これらのシンボリックリンクにより、マネージャーアプリケーションをコピーせずに、すべてのHosts
でマネージャーアプリを使用できます。