Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X
Post

my softbankのまとめて支払いで詰まった

Webネタです。

仕事でSoftbankのまとめて支払いを実装したのですが、
これがかなりややこしかったので備忘録として書いておきます。


携帯電話には各キャリアごとに決済サービスを提供していますが、
softbankでは決済処理を行う時、少し面倒くさい手順を踏む必要があります。

1. openid認証を行う
2. 取得したopenidの文字列からIDを抽出し、それで独自APIにより属性情報を取得する
3. 2で取得した属性情報内のIDを利用して決済の通信を行う

このような形で、ユーザを特定するIDを取得するまでに2段階の処理が必要になってきます。
ただ単に2段階なだけだといいんですが、
openid認証を成功させる条件がシビアになっています。

・あらかじめrealmをsoftbankの管理画面で登録している事。
 openid認証を行った時のrealmと登録されているrealmを照合しており、
 この値に差異があると失敗となります。

・OPからRPに対するdiscoveryが実行される。
 xrdsファイルを返すよう、適切に設定してないとなりません。


上の2つの条件を満たしていないとならないのですが、
では条件を満たしていないときどういう挙動をするか?
ほとんどの人は1で設定が正しくないとエラーが出ると予想するかと思います。

しかし実際は……
設定が誤っていてもopenid認証は正常に完了します。
その後、2で属性情報を取得しようとした時にそこで失敗します。

設定が間違っているのにopenidの取得までは成功するってなんじゃそれ……
仕様書を読んでもこの辺の挙動が詳しく書いておらず、
原因突き止めるまでにだいぶ時間を食う事になりました。

あと、この挙動だとSoftbankに申請していない適当なサイトでも
openidをログインID代わりに利用する事まではできるような……試してませんが。

TrackBack URL :

Leave a comment  

name

email

website

Submit comment