OpenID : session_type DH_SHA1 or DH-SHA256 ? mixi.jpの罠 ?

PearのOpenIDライブラリを使っているのですが、
mixi.jp の OpenIDを利用したところ以下のエラーが返された。

“Missing dh_server_public parameter in association response”

https://mixi.jp/openid_server.pl

データは取得出来ていたけど、dh_server_publicがかえってこなかった。。。

ようやく原因がわかりました。。。

session_typeには、

no-encryption
DH-SHA1
DH-SHA256

の3つがあるのですが、sslのときは、当然利用が必要です。

mixi.jpはhttps://につなぎに行くのですが

versionが

http://specs.openid.net/auth/2.0/server

のため

OpenID_Association_Request
のconstruct内で
versionから
session_type = DH-SHA256
と設定されました。

残念ながら mixi.jpはDH-SHA256では、
dh_server_public
enc_mac_key
が返されませんでした ; o ;
仕方ないのでmixiのときは、 DH_SHA1 にして無事認証完了^-^;

        // Set defaults
        $this->message->set('openid.mode', OpenID::MODE_ASSOCIATE);
        if (OpenID::$versionMap[$version] == OpenID::NS_2_0) {
            $this->message->set('openid.ns', OpenID::NS_2_0);
            $this->message->set('openid.assoc_type', self::ASSOC_TYPE_HMAC_SHA256);
+++            if(preg_match('/mixi.jp/',$this->opEndpointURL)){
+++              $this->message->set('openid.session_type', self::SESSION_TYPE_DH_SHA1);
+++            }else{
              $this->message->set('openid.session_type', self::SESSION_TYPE_DH_SHA256);
+++            }
        } else {
            $this->message->set('openid.assoc_type', self::ASSOC_TYPE_HMAC_SHA1);
            $this->message->set('openid.session_type', self::SESSION_TYPE_DH_SHA1);
        }

yahooは、すべて対応しています。=> http://developer.yahoo.co.jp/other/openid/
mixiは、対応しているのかなんなのか表記がありません。。。 => http://developer.mixi.co.jp/openid/spec

ここでは、Yahooさんが勝利です。一日潰れた。。。

This entry was posted on 土曜日, 1月 22nd, 2011 at 11:42 PM and is filed under OpenID. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Unityによるゲームを公開しております iOS/Android
https://itunes.apple.com/jp/app/lost-knight-3d-action/id900917032
https://play.google.com/store/apps/details?id=com.groundroad.runknight

各種開発支援・機能開発等小さいお仕事などもお請けしております。
unity開発支援, PHPシステム開発, javascript/html5 フロント開発, titanium mobileアプリ開発
お気軽にお問い合わせください
大崎・五反田近郊での対面でのお打ち合わせはいつでも可能です。