web-dev-qa-db-ja.com

TomcatのManager-Appへのログイン中の401不正なエラー

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>
23
Ava

申し訳ありませんが、明らかな質問をする必要があります。Tomcatを再起動しましたか?

それでもうまくいかない場合は、ロールに「admin-gui」を追加してみてください。

<user name="Tomcat" password="s3cret" roles="admin-gui,standard,manager-gui"/>
15
Mohamad

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!

そのため、「<!-」と「->」を削除することを忘れないでください。

23
Dan H

私もこの問題に遭遇しました。 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>
6
David

明確にするために、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>
4
MattC

ブラウザを確認してください。

WindowsでTomcatをローカルで実行していて、Chromeを使用してログインしようとしました。上記の提案はいずれも機能していないようです。最後に、気まぐれに、Firefoxを試して、ログインプロンプトが表示されました! Chromeを再起動して、もう一度試してみましたが、まだ何もしませんでした。 Chromeが付いたネットワークポリシーのネジが表示されます-ポップアップログインダイアログをブロックしている可能性があります。

3
Greg

Server.xmlの正確な行を確認してください

  <Realm className="org.Apache.catalina.realm.LockOutRealm">
    <Realm className="org.Apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

ナビディープ

2
navdeep

誰かが私と同じ過ちを犯した可能性は低いですが、Tomcatのバージョンが2つある場合(またはインストールに手間取って、クリーンアップする必要があるファイルがある場合)は、正しいフォルダーにいることを確認してください。

私はC:\ Tomcat7 \の設定ファイルを見ていましたが、実行されていた実際のTomcatはC:\ Program Files\Apache Software Foundation\Tomcat 7.0 \にありました

2
n00b

同じエラーが発生し、users.xmlでパスワードを変更しました。解決しました。 &@などの特殊な文字を使用する場合。機能しません。それを除く。

1
gencaysahinn

Tomcat 8を使用している場合、次のものが欠落している可能性があります。 RealmsTomcat-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>

この後、あなたは落ち着くはずです。

1

Windowsでは、別のTomcatインストール用にCATALINA_HOME環境変数が定義されていたため、新しいインストールフォルダーでスタートアップスクリプトを使用していても、それが表示されていました。したがって、CATALINA_HOMEを削除するだけで問題は解決しました。

0
Richhard

Server.xmlでポートを8080から8088に変更するとうまくいきました。以下のコードを参照してください

<Connector port="8088" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" />
0
ajinkya

また、Tomcat_HOMEおよびJava_HOME環境変数が正しく設定されていることを確認してください。

0
TenLeftFingers

まったく同じエラーが発生していましたが、コネクタポートを8080から8081に変更して初めて機能し始めました。

0
autremoi

以下は「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などの別のブラウザーを使用してみてください。

0
Ajay Kumar

@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になります。

問題を回避するための多くのオプションがあります。しかし、それらのどれがベストプラクティスであるかはわかりません。

  • 編集後に許可を変更します(はい...)。
  • nanoとWinSCPはこの問題の影響を受けないようです。
  • SETGID:chmod g + s/conf_folder(テストされていません)。
  • フォロー この回答
  • たぶん、権限を意識したエディターでしょうか?
0
Carl Chang

私の場合、<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.xmlContextをオーバーライドする方が有益であることがわかりました。

最後に、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>

docBaseappBaseに相対的です。 /opt/Tomcat/webapps/MyUniqueHostには、システムのパッケージマネージャー(Debianベース)によってインストールされたマネージャーアプリケーションへのシンボリックリンクがあり、/usr/share/Tomcat8-admin/managerに配置されています。これらのシンボリックリンクにより、マネージャーアプリケーションをコピーせずに、すべてのHostsでマネージャーアプリを使用できます。

0
acker9