日々の生活メモ帳

調べたことをたまーにつぶやきます コメント、指摘大歓迎

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で一発(ソースコードからコンパイルしてたときの苦労はなんだったのか)

yum install -y mod_auth_openid

/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

 これでapacheOpenID認証を設定出来ました

 次にpython-openidにおいてあるOPのサンプルで認証動作を確認したいと思います

まずpipで必要なライブラリをインストールした後、ソースコードを取って来て実行

pip install python-openid

git clone https://github.com/openid/python-openid.git

cd python-openid/examples

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

 

でインストールできます