LoginSignup
0
0

More than 5 years have passed since last update.

IDトークンの検証時にエラー

Posted at

javaのYconnect SDK(jp.co.yahoo.yconnect-2.0.0.jar)を使用してID連携を行いたいと考えています。
jp.co.yahoo.yconnect-2.0.0.jarに同梱されていたサンプルサーブレット(YConnectServlet.java)を使用してID連携を試みたのですが、IDトークンの検証時にJsonの解析エラーが出てしまいます。
なにか足りないことがあるのでしょうか。

■行ったことは以下のとおりです。

【サンプルプログラムの準備】
1.Yahooデベロッパーネットワークで、サーバサイドアプリケーションを作成
2.サンプルサーブレット(YConnectServlet.java)のアプリケーションID、シークレット、コールバックURLの箇所を取得したものに書き換え
3.コンパイル、サーバ(tomcat)にデプロイ

【サンプルプログラムの実行】
1.ブラウザでサンプルサーブレットへアクセス
2.Yahooの「アプリケーションの利用」画面が表示される
3.「同意する」ボタンを押下する
4.コールバックURLへリダイレクトされ、サンプルサーブレットが実行される
ここで、エラーが発生します。

■エラーの発生箇所・内容

サンプルサーブレット(YConnectServlet.java)の、IDトークンの検証でエラーが発生しています。
具体的には、YConnectExplicit#verifyIdToken()メソッドを呼んだときに、javax.json.stream.JsonParsingExceptionが発生します。
jsonの解析に失敗しているようです。
以下、その際のスタックトレースです。


javax.json.stream.JsonParsingException: Unexpected char 0 at (line no=1, column no=226, offset=225)
at org.glassfish.json.JsonTokenizer.unexpectedChar(JsonTokenizer.java:532)
at org.glassfish.json.JsonTokenizer.nextToken(JsonTokenizer.java:415)
at org.glassfish.json.JsonParserImpl$ObjectContext.getNextEvent(JsonParserImpl.java:255)
at org.glassfish.json.JsonParserImpl$StateIterator.next(JsonParserImpl.java:172)
at org.glassfish.json.JsonParserImpl.next(JsonParserImpl.java:149)
at org.glassfish.json.JsonReaderImpl.readObject(JsonReaderImpl.java:177)
at org.glassfish.json.JsonReaderImpl.readObject(JsonReaderImpl.java:103)
at jp.co.yahoo.yconnect.core.oidc.IdTokenDecoder.decode(IdTokenDecoder.java:62)
at jp.co.yahoo.yconnect.YConnectExplicit.verifyIdToken(YConnectExplicit.java:226)
at jp.co.yahoo.sample.YConnectServlet.doGet(YConnectServlet.java:103)


■これまでに調査したこと

YConnectExplicit#getIdToken()メソッドからの戻り値は、ドット区切りの文字列が取得できています。
ですので、IDトークンは取得できているようです。
取得できたIDトークンが正常なのかどうかを調査するため、base64デコードしてみました。
その結果、ドット区切りの2番目のデータがうまくデコードできず、jsonとして不正なもの(データが途中で切れてしまう)になりました。
おそらくこのことが原因でIDトークンの検証に失敗しているのだと思います。
通信の障害も疑い、時間をおいて何度かやり直してみましたが、毎回同様に失敗します。

ちなみに、アクセストークンは正常に取得できており、UserInfo情報の取得も正常にできました。

IDトークンが正常にbase64デコードできれば解決するように思いますが、原因がわかりましたらご教示ください。

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0