JenkinsとApacheの認証連携

Jenkinsを使っていてたびたび不便だと思っていたのが、

Apacheの認証が走った後に、Jenkinsには、別にもう一度ログインしないといけないという点でした。

自分しか使っていないとか使う人が限られているときは、apacheの認証だけにして、

Jenkinsはフルオープンにしておけばいいんですけどね(^^;)

そんなこと思って割に何にもしていなかったのですが、Jenkinsのプラグイン一覧から、別件でプラグインを探しているときに↑のことを解消してくれそうな気配のあるプラグインを見つけたので、試しに設定してみた。

とりあえず、インストールしてみてシステム設定画面とか適当に見ていたら、ユーザー情報のところに「HTTP Header by reverse proxy」が増えてた。

よくわからないので、ググってみると、apacheの設定ファイルにHeader情報にX-Forwarded-Userの情報を追加する設定があるみたい。

リバースプロキシでの環境変数REMOTE_USER渡し - komamitsu.log

ということで、さっそくhttpd.confに追記しました。

LoadModule headers_module modules/mod_headers.so
LoadModule rewrite_module modules/mod_rewrite.so


Order allow,deny
Allow from all

AuthType Digest
AuthName trac
AuthUserFile "C:\TracLight\projects\trac\SampleProject\trac.htdigest"
Require valid-user

BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
ProxyPass http://127.0.0.1:8010/jenkins
ProxyPassReverse http://127.0.0.1:8010/jenkins

RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1,NS]
RequestHeader set X-Forwarded-User %{RU}e

mod_headersとmod_rewriteが必要になるので、ロードもしてあげてます。

これで、再起動して、アクセスしてみたら、apacheの認証後jenkinsにもユーザー情報が反映されていました。

一度アクセスアクセスすると人々のメニューに追加されていくみたいです。
そして、一度登録されると削除できないみたい。

勘違いしていました。
Administrator権限を付与されているユーザであれば、自分自身以外のユーザの情報は削除することができました。

ユーザを一人しか作っていなかったために、気がつかずにいました(汗