おことわり
本記事は未完ですが、諸事情のため本日いったん投稿します。
目的
Tomcat manager画面を、 tomcat-users
の代わりにKeycloakで認証させたい。
前提
Tomcatサイトはpodmanで作成。本記事の範囲外なので省略する。
実作業
Tomcatへアダプタの導入
まずKeycloakで配布しているKeycloak Tomcat adaptorをダウンロード。
記事に従い $TOMCAT_HOME/lib
へ展開する。
再起動してみるが、アダプタがロードされたとはログに一切出ない。
(あとで気づいたが、ログレベルの設定を下げればよかったかも)
半信半疑で、とりあえずValveを追加してみる。
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve"/>
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
すると、ログに反応あり。
30-Mar-2023 14:42:27.287 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment descriptor [/usr/local/tomcat/conf/Catalina/localhost/manager.xml]
30-Mar-2023 14:42:44.782 INFO [Catalina-utility-2] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
30-Mar-2023 14:42:44.787 WARN [Catalina-utility-2] org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve.keycloakInit No adapter configuration. Keycloak is unconfigured and will deny all requests.
30-Mar-2023 14:42:44.817 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of deployment descriptor [/usr/local/tomcat/conf/Catalina/localhost/manager.xml] has finished in [17,530] ms
Keycloak is unconfigured and will deny all requests.
とあるので、クライアントアダプタの読み込みは完了しているように見える。
Keycloakでクライアントの追加
Tomcatで使うためのクライアントを、既存のRealmに追加してみる。
ちなみにKeycloakのバージョンは19.0.1(ぜんぜん追従できていない)。
設定を保存後、 keycloak.json
をダウンロードする。
Tomcatの webapps/manager/WEB-INF
直下に配置し、 /manager
へアクセスすると。。。
Keycloak画面へリダイレクトされるが、以下のようなエラーに。
そういえば、managerで必要なロール manager-gui
を作成していなかったので作成。
ユーザへの割り当てをしようと「Users in role」のタブを開くと、「このタブは直接指定用なので、グループやユーザ設定画面で指定したものはここに表示されないよ」とのこと。
本来はグループやユーザの画面で指定すべきなのだろうと、ユーザ画面へ遷移。
とりあえず個別にユーザ設定する。
割当完了とメッセージを確認。
相変わらず解消せず。
30-Mar-2023 15:17:33.112 INFO [http-nio-8080-exec-13] org.keycloak.adapters.KeycloakDeployment.resolveUrls Loaded URLs from https://keycloak.m00m.org/realms/practice1800/.well-known/openid-configuration
30-Mar-2023 15:17:48.403 INFO [http-nio-8080-exec-15] org.keycloak.adapters.authorization.PolicyEnforcer.configurePaths No path provided in configuration.
30-Mar-2023 15:17:48.404 INFO [http-nio-8080-exec-15] org.keycloak.adapters.authorization.PolicyEnforcer.configureAllPathsForResourceServer Querying the server for all resources associated with this application.
Keycloakへの設定取得時に何かに失敗しているようだ。
(つづく)
参考