2012/01/05

NGINX で MySQL に保存されている redmine のアカウント情報を元にBASIC認証する

まだ実施していないけど、実現するために必要そうな情報をちょいメモ。

<やりたいこと>
nginx でBASIC認証をしたいが、認証情報は redmine のアカウント情報(MySQL)をソースとしたい。

<背景>
redmine を導入したプロジェクト管理サーバに jenkins も導入。
jenkins の管理画面や ant により生成した javadoc やテストレポートなどの静的なファイルもプロジェクト管理サーバで閲覧できるようにしたい。
当然、これらのファイルにも認証をかけたいが、アカウント情報はredmineのものを使いたい。
public にこれらのドキュメントを配置しても良いが、静的なコンテンツのために rails のリソースを使うのはもったいないので、これらは nginx で直接返すようにしたい。

<Apacheの場合>
mod_auth_mysql を以下のように設定すればよいらしい
Auth_MySQL                      On
Auth_MySQL_Socket               /var/run/mysqld/mysqld.sock
Auth_MySQL_Host                 localhost
Auth_MySQL_User                 [redmineのデータベースユーザ名]
Auth_MySQL_Password             [redmineのデータベースパスワード]
Auth_MySQL_DB                   [redmineのデータベース名]
Auth_MySQL_Password_Table       users
Auth_MySQL_Username_Field       login
Auth_MySQL_Password_Field       hashed_password
Auth_MySQL_Encryption_Types     SHA1Sum
Auth_MySQL_Empty_Passwords      Off
AuthType Basic
AuthName "Authorization Realm"
Require valid-user

<NGINXの場合>
nginx には mod_auth_mysql はない。
替わりに mod_auth_pampam_mysql を使えばいけそう。

http://web.iti.upv.es/~sto/nginx/
http://pam-mysql.sourceforge.net/

0 件のコメント:

コメントを投稿