apacheのモジュールを使って簡単OpenID対応
今更感ありますが、apacheにモジュールをインストールして手間をかけずにOpenIDに対応する方法の紹介です
ここではローカルにOpenIDのOP(認証サーバのこと)も立てて動作の確認までしていきます
モジュールのインストールに関しては、ほとんどここを参考にしました
使ったもの
OS:CentoOS6.7
WEBサーバー:apache2.2
使うモジュール:mod_auth_openid
まずはリポジトリの登録
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
そしてモジュールインストール、yumで一発(ソースコードからコンパイルしてたときの苦労はなんだったのか)
/etc/httpd/conf.dに mod_auth_openid.confができるのでそこに設定を入れていきます
LoadModule authopenid_module modules/mod_auth_openid.so
<Location "/">
AuthType OpenID
require valid-user
AuthOpenIDDBLocation /var/lib/mod_auth_openid/database.db
AuthOpenIDTrusted ^http://localhost:8000
AuthOpenIDSingleIdP http://localhost:8000/yadis
</Location>
一応説明しておくと、それぞれの意味はこんな感じです
AuthOpenIDDBLocation=セッション管理にsqliteを使用しているので、そのdbファイルの位置です
AuthOpenIDTrusted=認証先として信用するOPのURLです
AuthOpenIDSingleIdp=使用するOPのIdentifyURL(XRDS文書(XML)を渡してくるURLもしくはXRI) 設定しない場合は認証前にIdentifyURLを入力する画面が表示されます
設定が終わったので起動し、自動的に起動するように設定変更
service httpd start
chkconfig httpd on
次にpython-openidにおいてあるOPのサンプルで認証動作を確認したいと思います
まずpipで必要なライブラリをインストールした後、ソースコードを取って来て実行
git clone https://github.com/openid/python-openid.git
python server.py
試しにブラウザでapacheのURLにアクセスして見ると今さっき立てたOPにリダイレクトされます
おまけ
mod_auth_openidcの場合
yum groupinstall 'Development tools' -y
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install httpd mod_ssl httpd-devel curl hiredis jansson -y
rpm -ivh https://github.com/pingidentity/mod_auth_openidc/releases/download/v1.8.5/mod_auth_openidc-1.8.5-1.el6.x86_64.rpm
yum install mod_auth_openidc -y
でインストールできます