社外からもアクセスしたいけど、社員とか会社の人にしかアクセスさせたくない!なんてことはよくあると思います。
そこで昔から用いられていたのがベーシック認証とかダイジェスト認証とかその辺だと思います。
今も使われている会社って意外に多いのかと思います。
ただ、退職者が出たり、新しく人が入ったりでパスワードを変更しなければ行けないですよね。
非常にだるい。本当だるい。そんなことにエンジニアの労力を最低位のでしょうか?
良いわけありません。
そこでapacheを使っている場合はmod_auth_openidを使ってGoogleAppsで認証させるのはありかと思います。
まあ、前提条件として「webサーバがapacheであること」「GoogleAppsを使っている」ことが条件になってしまいますが…
今回のOSはcentos6.4のminimalを想定しています。
そしてVagrantを使っています。
1. まずはBoxファイルを用意する
Vagrantを使わない人は読み飛ばしてかまいません。
$ vagrant box add centos64_mini https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box $ vagrant init centos64_mini $ vagrant up
ちなみにhttpアクセスするためにVagrantファイルをいかように編集してください
$ vim Vagrantfile -- # config.vm.network :forwarded_port, guest: 80, host: 8080 ++ config.vm.network :forwarded_port, guest: 80, host: 8080
編集後は再起動しましょう。
$ vagrant reload
そして接続
$ vagrant ssh
見るだけでわかると思いますが、糞簡単にLinux環境が用意できますね。本当に素晴らしくて素敵な時代!!
2. yumのepel,remiのリポジトリを登録する
この辺はもう定番ですね・・・w
$ sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 $ sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm $ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi $ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
3. mod_auth_openidを入れる
$ sudo yum install mod_auth_openid
たったこれだけ!!
4. mod_auth_openidの設定をする
$ sudo vim /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 ^https://www.google.com/accounts/o8/ud AuthOpenIDAXRequire email http://openid.net/schema/contact/email @polidog\.jp #←ドメイン名はappsのもの AuthOpenIDSingleIdP https://www.google.com/accounts/o8/id AuthOpenIDAXUsername email AuthOpenIDCookiePath / </Location>
5.ブラウザからアクセスしてみましょう
http://localhost:8080/
たぶんこんな感じの画面がでてきます。
Image may be NSFW.
Clik here to view.
あとは承認すればアクセスできるようになります。しかも指定したドメインのGoogleAppsからしかアクセスできないので非常に管理がしやすいのではないでしょうか。
myDNSとリバースプロキシを組み合わせれば複数代のサーバの認証をすることもできます。
気が向いたら方法をブログにでも記載します。
参考
Using Apache2′s mod_auth_openid…
Introduction : The Apache OpenID Module