Sonatype Nexusのユーザー管理にOpen LDAPを使う
Apache Maven の管理ソフトウェア、 Sonatype Nexus と OpenLDAP を連携させる。
Open LDAPのインストール・設定
この記事を参照して適当に入れる。
ユーザー情報投入までやる。
Sonatype Nexusのインストール
ここからwarを落とす。
ちょっとわかりにくいけど、「Download Nexus OSS」→「Download the Nexus X.X.X WAR distribution」のリンクで落とせる。
これを適当なTomcatに入れてデプロイ。その際、ファイル名を"nexus.war
"とかに変えておくといいと思うよ。
Sonatype NexusとOpen LDAPの連携設定
Nexusへログイン
Nexusの設定はWebインターフェースから行う。
まずはNexusにログインしよう。
今は適当にlocalhostにTomcatが立ってるとすると、
http://localhost:8080/nexus/
とかにアクセスすればいいはず。右上の「Log In」からログインしよう。
初期設定では、
Username:admin
Password:admin123
で管理者権限で入れる。
LDAP機能の有効化
デフォルトではLDAP認証機能が有効化されていないので有効化しよう。
左側のメニューの「Administration」→「Server」から、「Security Settings」の「OSS LDAP Authentication Realm」を有効のほうへ入れてSaveを押す。
LDAPの設定
先ほどの管理メニューの「Security」→「LDAP Configuration」から、LDAPの設定をしていく。
今、ユーザーエントリがou=Users,dc=test,dc=com
にあり、LDAPの管理者がcn=manager,dc=test,dc=comだとすると、次のような設定になると思う。
Connection:
Protocol:ldap
Hostname:yourldap.server.com
Port:389
Search Base:dc=test,dc=com //ユーザーやグループエントリのある基底DN あとで使う
Authentication:
Authentication Method:Simple Authentication
SASL Realm:
Username:cn=manager,dc=test,dc=com
Password:XXXXXXXXXXX
ここまでできたら、一旦Check Authenticationボタンを押して、きちんと設定されているか確認しておく。
次はLDAPアカウントとの紐付け設定。こんなかんじかな。
今回はグループは使わないことにして、GroupElementMappingのチェックは外しておく。
あと、personクラスにはE-Mailを表す属性がないので適当に入れておく。
Base DN:ou=Users
User Subtree:unchecked
Object Class:person
User Filter:
User ID Attribute:cn
Real Name Attribute:cn
E-Mail Attribute:description //適当
Password Attribute:userPassword
Base DNには、先程Connectionのところで設定したSearch DNのより下位の部分だけ書く。
つまり、$BASE_DN,$Search DNが真のDNってことになる。このDNの直下が検索対象になる。
直下だけでなく下位すべてを検索して欲しい時は、User Subtreeにチェックすればいいみたい。
ここまで設定して、Check User Mappingを押すと、見つかったユーザー一覧が下に出てくるはず。
出来ていたら最後にSaveしておこう。
権限付与
さて、これでユーザー情報を見つけるところまでできたわけだけど、この状態ではまだログインできない。
それはログインしてページを見る権限がないため。
ここからは各ユーザーに権限を付与していこう。
今回はしていないグループ化をしてあれば、グループごとに権限を付与することもできるみたい。
左側のメニューの「Security」→「Users」から権限を変更したいユーザーを選んで、「Config」→「Role Management」から変えていこう。
見ればわかるけど、adminにしたいならNexus Administrator Role
、一般ユーザーならRepo: All Repositories(Full Control)
とNexus Deployment Role
を付与しておけばいい感じになると思う。
完成!
これでログイン出来るはず!
LDAP側にユーザーを追加したときは、UsersページのRefreshを押すとユーザーが追加されるので、権限付与してあげればOK。