おーおーすのサンプルを動かしてみた。

WASFで、まあ、概要はわかるけれども、なんかこう腹落ちしないなーということで、サンプルしやすそうなOAuthしてみました。
相手はひとまずついったで。
ここ(http://gist.github.com/229599)に落ちてたサンプルを使ってやってみもうした。

で、ぴろっとできたのですが、やっぱ腹落ち感は無く。OAuthとかいう単語の前にこういう仕組みでやってたりしたとこを見ていたりするので、それが一般化されましたってことなのかもしれないなという感じなのでしょうかね。

一番苦戦したとこは、PEARのとこ。特に読み方。「ぴあ」じゃなくて「ぺあ」なのですね。チケット売ってそうでいいのに。

PHPインストーラから入れたら、ごーぺあが無かったので、src版からgo-pear.batとPEARフォルダをなんとなくコピーしてごー!ってしたら入った。けど、いつの間にかApachePHP設定が壊れてたのでそこ直した。
ほんで、

pear install Net_URL2-0.3.1
pear install HTTP_Request2-0.5.2
pear install HTTP_OAuth-0.1.14

でぴろっと入った。
ここら辺の書きっぷりは、http://pear.php.net/package/HTTP_OAuth/downloadとかを見るとよろし。
ついった側はhttp://twitter.com/appsからぴこぴこすればよろし。けど、なんか、「%{created}前y****r – 読取専用」とか謎の文字列が出てるのが気になりどころ。

追記:
サンプルコードの$http_requestのとこに以下のを追加してBurpとかで中身見るとよいよ

$http_request->setConfig(array(
'proxy_host' => 'localhost',
'proxy_port' => '8080',
));

Authorizationヘッダに色々入ってて、かつレスポンスの中身も興味ポイント満載です。
ここら辺まで見ておくと、何となく納得感はあるかもですね。サーバ側も自分で用意してみたほうがいいのだろうけど使う予定はないので微妙なとこ。

クライアント証明書の情報をApache経由でTomcatで受け取るののサンプルを動かしてみた。

意外とぴろっといけた。
こういう感じで。
ブラウザ(IE

Apache
(クライアント認証を終端)

Tomcat5:8080
ApacheTomcat間はhttp)

jspでHttpServletRequestの情報を取得

一番苦戦したのは、クライアント認証のとこ。なんか、3年とか短いべ、って思って後ろに0くっつけて作ったら、途中でエラーに。エラーになったところから元に戻して、やってみたけど、なんか、有効期限切れとか出る。クライアント証明書の期限は正しいけど、CAの期限が1904年くらいだったかな?になっててなかなか気づけず。最初からやり直しましたです。

で、ここら辺の情報は苦なく取れたっぽい。
Apacheには

SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire

ProxyPass ajp://localhost:8009/jsp-examples/

ってらへんの呪文を書いて、Javaのほうで

X509Certificate certs =
(X509Certificate
)request.getAttribute("javax.servlet.request.X509Certificate");

とかで取れるぽい。まあ、これでいいのかはあんまりまだ考えてないですけどもぁ。

SerialNumber = [17932628498249950513]
NotBefore = [Wed Jun 02 19:35:18 JST 2010]
NotAfter = [Sat Jun 01 19:35:18 JST 2013]
IssuerDN = [EMAILADDRESS=harupu@sagittarius.dip.jp, CN=Harupu CA,
OU=Admin, O=Harupu CA, ST=TOKYO, C=JP]
SubjectDN = [EMAILADDRESS=harupu@sagittarius.dip.jp, CN=harupu, OU=BalckCats, O=sagittarius.dip.jp, L=BUNKYO, ST=TOKYO, C=JP]

これ、Stringとかで取れてる(クラスはPrincipalってやつだけどStringで取るしかない?)気がするけど、カンマでsplitとかすんのかな?無理やりっぽい。