--- ---
Skip to content

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ファイルを落としてくる

https://oss.sonatype.org/

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

まず、上記のファイルを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を編集するのが大変でしたが、なんとか動いています。

それでは。

追記:続編

執筆

phenylshimaのプロフィール画像
phenylshima phenylshima on GitHub

そのへんの大学生です.プロフィールについてはGitHubを見ていただければ…

最近よく使う言語はRustとTypeScriptです.Rustは書いていてたのしいので,よく採用します.