2008/5/11 日曜日 by kouichi
サービスを使う際に毎度アカウント登録するのはなんだかなぁと常々考えていまして、自分のサービスmemonoでは思い切ってアカウント登録なしにして、openidのみの認証で提供することにしました。
開発はほぼJavaでやっていますのでopenid4javaのライブラリを使っています。
今のところの使用感としましては。
・以前書いたのですが、Ver0.9.4ではExceptionが出て動作しないので、今のところ0.9.3を使っています。
#開発中の環境では0.9.5が動いているので、後々そちらに乗せかえる予定です。
・ヒープメモリを50Mくらい使用する模様です。
・Providerへの初回アクセスへは時間がかかります。
・SREG情報を公開しているProviderは少ないので、ハンドルネームなどは個別に入力が必要な場合が多いと思います。
openid4javaを使ってサービスを提供しているよ。ってところは見当たらなかったので、何かの参考になればと思います。
—-
2008/5/15追記
memonoで使っているopenid4javaのバージョンを0.9.5にしました。
Posted in memono.jp, openid | No Comments
2008/2/21 木曜日 by kouichi
OpenIDでは認証局に登録してある属性(メールアドレス、氏名など)を取得する方法があります。
openid4javaでもconsumer-servletというサンプルが用意されてるのですが、openid.ne.jpだと属性が取得できませんでした。
調べてみると、OpenID Simple Registration Extension 1.0の仕様を使えば取得できるようです。
openid4javaでもSRegRequest、SRegResponseのクラスを使えば取得可能です。
simple-openidのサンプルを元に修正を加えると
consumer_redirect.jspの45行目付近
// Attribute Exchange example: fetching the 'email' attribute
SRegRequest req = SRegRequest.createFetchRequest();
req.addAttribute("email",true);
authReq.addExtension(req);
consumer_returnurl.jspの41行目付近
SRegResponse fetchResp = (SRegResponse) authSuccess.getExtension(SRegResponse.OPENID_NS_SREG);
String email = fetchResp.getAttributeValue("email");
session.setAttribute("openid-email", email);
ほかにも属性が公開されている場合には誕生日、名前なども取得できます。
仕様はこちら
サンプル
consumer_redirect.txt
consumer_returnurl.txt
index.txt
Posted in openid | No Comments
2008/1/31 木曜日 by kouichi
Yahoo!JAPAN、OpenIDの発行をスタート
ということもあり、openidのConsumer部分の実装にチャレンジしてみました。
Javaではopenid4javaというライブラリが提供されているので(というよりそれしかない??)使ってみました。
ソースやライブラリは
http://code.sxip.com/openid4java/
からダウンロードすることができます。
今日時点の最新は0.9.4というバージョンです。
simple-openidというサンプルがついていたので、それを実行したところ
org.openid4java.message.MessageException: 256: Required parameter missing: openid.mode
at org.openid4java.message.Message.validate(Message.java:182)
at org.openid4java.message.AuthSuccess.validate(AuthSuccess.java:404)
at org.openid4java.message.AuthSuccess.createAuthSuccess(AuthSuccess.java:117)
at org.openid4java.consumer.ConsumerManager.verify(ConsumerManager.java:1078)
・・・
とエラーがでて、進みません。
ソースもダウンロードしてみてデバグしてみたのですが結局わからず、ためしに一つ前のバージョン0.9.3をこちらからダウンロードしたところばっちり動きました。
0.9.4のほうは見送って0.9.3を使うことにします。
ちなみにopenid.ne.jpとlivedoorのアカウントで試したのですが、openid.ne.jpのほうはローカル環境(http://localhost:8080など)では動作しない様子。
#HttpServletResponse#sendRedirectで404が返ってきます。
外部向けに公開したドメイン上ではきちんと動作しました。
なかなか、情報が少ないそんな中、こちらのサイトも参考になります。
PHPのほうは情報が活発ですね。うらやましい。。
ためしにPHP-openidを試してみましたが、こっちはすんなりいけました。
Posted in openid | 4 Comments