growi icon indicating copy to clipboard operation
growi copied to clipboard

Imprv: LDAP からグループ情報を取得し、同期する

Open aviscaerulea opened this issue 6 years ago • 2 comments

Environment

Host

item version
OS CentOS 7.5
GROWI 3.1.6
Using Docker yes
Using [growi-docker-compose][growi-docker-compose] yes

What is the expected result? (期待される動作)

ユーザは LDAP 上から取得できているので、グループについても同様に LDAP 上のものを取得して欲しい。 LDAP 上のグループと同じようなグループ構成を二重管理しなければならなくなるため。

aviscaerulea avatar Jun 20 '18 00:06 aviscaerulea

@aviscaerulea 通常の UserGroup とは別に、自動で同期する LdapUserGroup みたいなものができると楽かもしれませんね。検討します。

yuki-takei avatar Jun 20 '18 17:06 yuki-takei

LDAPのグループ対応は未実装なのですね。下記、ページなども拝見しました。 https://dev.growi.org/Web%E4%BC%9A%E8%AD%B0%E5%AE%A4/ExternalGroup/%E5%AE%9F%E8%A3%85%E8%A6%8B%E9%80%9A%E3%81%97

Atlassian Crowd Serverという製品を使っているのですが、 やはりLDAPディレクトリとのグループ・ユーザー同期などの機能が実装されていて、 設定や設計の参考になるかもしれません(フィルタ設定や同期タイミングなど)。 https://ja.confluence.atlassian.com/crowd/configuring-an-ldap-directory-connector-18579550.html 上記crowdのLDAPコネクターに似た設定がconfluenceの日本語ドキュメントにあります。 https://ja.confluence.atlassian.com/doc/connecting-to-an-ldap-directory-229838241.html

たぶんチケットを別に起こす方が良いのかと思いますが、上記ドキュメントにある、 「入れ子グループ(nested group)」というグループ内にグループを含めることができる機能がとても便利で、指定した階層数(例:5階層)までグループに含まれるグループを展開することができるため、 これをサポートしておけば、LDAP側で容易に権限移譲(#1006)ができます。

passport-ldapauthやnode-ldapauth-forkのグループ周りのAPIを読めていないので、 たぶんにldapauth側な気もするのですが、 グループに含まれるユーザーのリストアップの実装時には、入れ子のグループのサポートも検討してもらえると嬉しいです。 (さほどむずかしくないと思うのですが、{大きな,遠めの}ディレクトリの場合は変更をキャッシュしたりしないと遅いかもしれません。)

(グループ側の実装が形になって公開されたら、またパッチを作ってお送りしたりもできるかもしれませんが...)

p.s. ちなみにCrowdを試すなら、https://github.com/teamatldocker/crowdと 接続するサンプルアプリとしてhttps://github.com/teamatldocker/confluence などを docker-composeで立ち上げて、試用ライセンスを取得するのが簡単です。 ご参考まで。

benok avatar Oct 23 '19 07:10 benok