apache のユーザ認証を Google Apps アカウントで行う Apache::Authn::GoogleApps

https://github.com/nazoking/perl-apache-authn-googleapps
perlの書き方とかドキュメントの書き方とかどうやったらCPANにあげられるのかとかテストの書き方とか英語とか全然分からないので知ってる人は何とかして欲しいです。apache のユーザ認証を Redmine で行う Redmine.pm を見ながら作りました。

使い方は、GoogleApps.pm をダウンロードして、/usr/lib/perl/Apache/Authn/GoogleApps.pm みたいなところにコピーして(詳しい場所は自分のlinuxさんと相談)、httpd.conf に

  PerlLoadModule Apache::Authn::GoogleApps
  <Location /svn>
     AuthType Basic
     AuthName GoogleAccount
     Require valid-user

     # ユーザ名に自動で補完するドメイン。
     GoogleAppsDomain example.com
     # 自動で補完するドメインをくっつけるタイミング。Always 常に None 付けない
     # Auto ユーザ名に @ が入っていなければくっつける(hoge と入れたら hoge@example.com にして認証)
     GoogleAppsDomainAppend Always
     # 認証に成功したらその結果をサーバにキャッシュしている時間(秒数)
     # キャッシュするけどスレッドごとに別っぽい(ARP::Pool)
     GoogleAppsCacheCredsMax 3600

     # ハンドラを使う宣言
     PerlAuthenHandler Apache::Authn::GoogleApps::handler
  </Location>

のように書いてhttpdをリロード。/svnにアクセスすると、Basic認証のダイアログが出て、GoogleAppsのアカウントでログインできます。

apache のモジュールとして動くのでsvnの認証ハンドラとかにも出来ますね。

apache←→Googlehttps ですが apache←→ブラウザ はBasic認証なので http だと盗聴されたら Google のパスワードまで漏れますね。

追加機能としては Googleグループを見て制限する方法が欲しいけど、まあとりあえず。

個人的な理由から CentOS5 で簡単に入れられること、は至上命題です。cpan install XXX みたいなのが必要になるのはNG。
centos だと yum install mod_perl perl-libwww-perl くらいで動作するんじゃないかなぁ。

いろんなモジュールに依存したくないのでキャッシュの仕組みに Redmine.pm が使っていた ARP::Pool 使ってるんですがスレッドごとに別なんですな……なんかいい方法ないの?

perlを実に久しぶりに触ったらさっぱり分からなくて特に最初の方のuse なんとかはどっか空そのままコピペしてきたのが大半なので誰か治してください。

あと中身見たら簡単に他の認証方法に利用できると思います。