openid4javaでSReg
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);
ほかにも属性が公開されている場合には誕生日、名前なども取得できます。
仕様はこちら
Posted in openid |
