jenkinsをApache経由でBasic認証するときに401が出て困る問題の対処(ハマったメモ)
jenkins先生をやんごとなき事情でBasic認証かけたいとき。
はい、乙カレー様です。桑野です。
Jenkins先生を公開したいなーって時とか、違う部署で見せたいなーみたいな時にお手軽に認証かます。
そう、Basic認証でしょう。
なんか謎にハマったのでメモ。
追記(1/31)
Authorizationヘッダさえバックエンドに渡さなければいいので、Securityオプションは有効でもOKでした。
ということで、これ、Apacheの設定だけで行けますね(;・∀・)スイマセン
基本的なBasic認証のかけ方
まず基本的なBasic認証のかけ方は公式のWikiのここですな。
具体的に書きます。
パスワードファイルの作成
$ htpasswd -c /etc/httpd/htpasswd jenkins Password: password Password: password
Apacheの設定
<VirtualHost *:80> ServerName jenkins.example.com ServerAdmin info@example.com ErrorLog logs/jenkins_error_log CustomLog logs/jenkins_access_log combined ProxyPass / ajp://127.0.0.1:8009/ ProxyPassReverse / ajp://127.0.0.1:8009/ RequestHeader unset Authorization # <- 追記(1/31):バックエンドににAuthorizationヘッダを渡さないようにする。 <Location /> Order allow,deny Allow from all </Location> <Location /> AuthType Basic AuthName "Jenkins Authentication" AuthUserFile "/etc/httpd/htpasswd" AuthGroupFile /dev/null Require valid-user </Location> </VirtualHost>
ですね。
あれれ?
これでもなんでか無限にBasic認証のダイヤログが開く、、、まだ開く、、、なんでやねん!と思います。
認証外すと普通にいける。
わけわからんなーと思って、カッとなってwireshark使って(早い)戻ってくるコンテンツ見ると。
Status Code: 401
Exception: Bad credentials
Stacktrace:
(none)Generated by Winstone Servlet Engine v0.9.10 at Mon Jan 28 19:44:23 JST 2013
おい、先生!
結論から言うとこのへんの公式Wikiにありましたが、Jenkis先生のセキュリティオプションが有効になっているとProxy通ってくるcredential見て怒ってくるという事のようです。
というわけで、
先生の設定を変更。
$ cd /var/lib/jenkins $ diff config.xml.org config.xml 9c9 < <useSecurity>true</useSecurity> --- > <useSecurity>false</useSecurity> 93c93 < </hudson> \ No newline at end of file --- > </hudson>
無事
認証が通りましたとさ。
めでたしめでたし。
Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
- 作者: 佐藤聖規,和田貴久,河村雅人,米沢弘樹,山岸啓,川口耕介
- 出版社/メーカー: 技術評論社
- 発売日: 2011/11/11
- メディア: 単行本(ソフトカバー)
- 購入: 26人 クリック: 496回
- この商品を含むブログ (64件) を見る