alfresco-keycloakを使ってみる(1, Alfresco設定編)
AlfrescoとKeycloakを連携させて、SSO(シングルサインオン)をしたいときに便利なのがこのalfresco-keycloakです。
https://github.com/Acosix/alfresco-keycloak
ただ、ドキュメントがやや上級者向けというか、基本的なところを端折っている感じがあり、導入するのはなかなかしんどいのです。
今回DockerでAlfresco Content Repository(Community)とAlfresco Shareを動かし、ログイン時にKeycloakに飛ばすところまではできましたので、その方法を書きます。
(各Dockerfileはacs-community-packagingを参考にしています)
1. ampファイルを落としてくる
alfrescoでは、.ampという拡張子のファイルを${TOMCAT_DIR}/amps/
や${TOMCAT_DIR}/amps_share/
(いずれも${TOMCAT_DIR}
はtomcatのディレクトリ)に置いて、ごにょごにょとやると(すみません、正確には把握していないのです)、プラグインを導入することができます。
そこで、まずはalfresco-keycloakの.ampを上記のサイトから落としてきます。repo用とshare用に分かれているのと、バージョンが複数あって、ampが配布されているものとそうでないもの、特にshareでは-withBouncyがあるものとそうでないものがありますので、注意します。私は-withBouncyが付いた方を選びました。
あ、あとutility(de.acosix.alfresco.utility)も落としてくるように。
2. Repo用のDockerfile
書くのが面倒なんですが…
alfresco/alfresco-content-repository-communityをベースにし、 次のような感じでしょうか(私はarm対応とか変なことをやっているのでだいぶかけ離れてしまっていますが)。 COPYの行はダウンロードしてきた.ampファイルの名前に合わせて適宜変更してください。
ARG TOMCAT_DIR=/usr/local/tomcat
COPY de.acosix.alfresco.utility.repo-1.3.0.amp ${TOMCAT_DIR}/amps/
RUN java -jar ${TOMCAT_DIR}/alfresco-mmt/alfresco-mmt*.jar install \
${TOMCAT_DIR}/amps \
${TOMCAT_DIR}/webapps/alfresco -directory -nobackup
COPY de.acosix.alfresco.keycloak.repo-1.1.0-rc7-20220123.141234-4.amp ${TOMCAT_DIR}/amps/
RUN java -jar ${TOMCAT_DIR}/alfresco-mmt/alfresco-mmt*.jar install \
${TOMCAT_DIR}/amps \
${TOMCAT_DIR}/webapps/alfresco -directory -nobackup
3. Share用の設定ファイル(share-config-custom.xml)
こちらが本題です。
まず、上記のファイルをshare-config-custom.xmlとしてダウンロードしてきます。そして、実際の構成に応じて(主にrepositoryのURLですが)変更してください。また、auth-server-urlやrealmなどのあたりも実際のkeycloakの設定に応じて変更が必要です。
このファイルのconfigのうち、前半がないとSSOが使えず、後半がないとエラーがでます。
4. Share用のDockerfile
alfresco/alfresco-shareをベースにします。無駄な部分があるかもしれませんが、とりあえず動いたものを載せておきます。
COPY share-config-custom.xml ${TOMCAT_DIR}/shared/classes/alfresco/web-extension/share-config-custom.append.xml
RUN cat ${TOMCAT_DIR}/shared/classes/alfresco/web-extension/share-config-custom.append.xml |\
sed -e '1d' |\
sed -i \
-e '/<\/alfresco-config>/r /dev/stdin' \
-e '$d' \
${TOMCAT_DIR}/shared/classes/alfresco/web-extension/share-config-custom.xml
COPY de.acosix.alfresco.utility.core.share-1.3.0.amp ${TOMCAT_DIR}/amps_share/
# apply amps
RUN java -jar ${TOMCAT_DIR}/alfresco-mmt/alfresco-mmt*.jar install \
${TOMCAT_DIR}/amps_share ${TOMCAT_DIR}/webapps/share -directory -nobackup -force
COPY de.acosix.alfresco.keycloak.share-1.1.0-rc7-withBouncy.amp ${TOMCAT_DIR}/amps_share/
#COPY de.acosix.alfresco.keycloak.share-1.1.0-rc7.amp ${TOMCAT_DIR}/amps_share/
# apply amps
RUN java -jar ${TOMCAT_DIR}/alfresco-mmt/alfresco-mmt*.jar install \
${TOMCAT_DIR}/amps_share ${TOMCAT_DIR}/webapps/share -directory -nobackup -force
RUN ls ${TOMCAT_DIR}/amps_share
### Install AMP on share
# RUN java -jar ${TOMCAT_DIR}/alfresco-mmt/alfresco-mmt*.jar install \
# ${TOMCAT_DIR}/amps_share/alfresco-governance-services-community-share-*.amp ${TOMCAT_DIR}/webapps/share -nobackup
RUN java -jar ${TOMCAT_DIR}/alfresco-mmt/alfresco-mmt*.jar install \
${TOMCAT_DIR}/amps_share/*.amp ${TOMCAT_DIR}/webapps/share -nobackup
おわりに
sedでxmlを編集するのが大変でしたが、なんとか動いています。
それでは。
追記:続編