--- ---
Skip to content

alfresco-keycloakを使ってみる(2, Keycloak設定編)

前回記事

今回はKeycloakを設定します。こちらも罠だらけです。

はまったときは下のjsonファイルをダウンロードし、Realmを作成してそちらで試してみてください。(これ以降test-realm.jsonと呼びます)

test-realm.json

1. Keycloakにfeaturesを追加

プレビュー版の機能である、token-exchangeadmin_fine_grained_authzが必要です。

Dockerfileをお使いの方はENV KC_FEATURES=token-exchange,admin_fine_grained_authz と書いておけばよいでしょう。

公式のドキュメントには admin_fine_grained_authzが必要とは書いていないのですが、 Red Hatのドキュメント にはtoken_exchangeを使うには必要だと書いてあるので入れておきます。

実際入れていないとPermissionsの設定ができないので、よくわからないエラー (token-exchangeのPermissionがないときに出るaudience not foundとか、 alfrescoクライアントのPermissionsタブから設定をおこなわないと出るclient not allowed to exchange to audienceとか) と格闘する羽目になります(そのせいで半日潰れました)。

2. Clientを追加

公式のドキュメント を参考に追加しましょう。alfresco repository用とalfresco share用が必要で、それぞれalfresco、alfresco-shareという名前で作成します。

この手間が面倒、かつjsonの構造が分かっている方は冒頭で紹介したtest-realm.jsonからClientのところだけパクってきてもいいでしょう。

そして、alfrescoの方はさらにPermissionsタブを開き(作成後じゃないと出ないはずです)、Permissions Enabledをonにします。 ここはなかなか重要です。それとtoken-exchangeを開き、alfresco-token-exchangeポリシーをApply Policyに入力します。

3. realm-managementというClientを設定する

Access Typeをconfidentialにし、AuthorizationをEnabledに変更し、 公式のドキュメントを参考にAuthorizationの設定を行います。 そろそろ冒頭のtest-realm.jsonを読む必要があるかもしれませんね。

4. Client Scopesを設定する

test-realm.jsonを読みましょう(長いので説明するとしんどいのです)。

おわりに

この四つを行えば大体動くのではないかと思います。動かない場合はKeycloak、alfresco、shareのログを見比べて頑張ってください!

alfresco、shareのログは.ampファイルのconfig/alfresco/module/acosix-keycloak/log4j.propertiesを編集して、ログレベルをDEBUGとかにすると詳しいのが見られます。

それでは。

執筆

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

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

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