OpenID Connect User-Agent Bindingを考えながら書いたメモ

何かと言うと、Twitter @AnywhereみたいにOpenID ConnectをJavaScriptとかで動かしたいときの仕様です。

OAuth 2.0だとどうなる?

一昔前の"User-Agent Profile"、その後改名して"Implicit Grant"っていうのを利用すればいいだけです。

OpenID Connectになるとどうなる?

上のOAuth 2.0 "Implicit Grant"をベースにして、OpenID Connectのデータをやりとりできるようにします。
とりあえず考えたのがこのフロー。

  • RPはOpenID ConnectのでっかいリクエストをJSONのRequest Fileに突っ込んでどこかに置いておく
  • RPはOPにユーザーをリダイレクトさせるときに、request_uriでRequest Fileを指定
  • OPはOAuth 2.0のパラメータに加え、OpenID Connectのパラメータも処理する
  • OPは認証/認可後、Assertionを保存しておく
  • RPへのリダイレクトのレスポンスにはAccess Tokenだけ
  • Userinfo Endpoint(JSONP)にAccess TokenをぶつけてAssertionとAttributesを取得

今日は(も?)、図は載せない。

しかし、何かモヤモヤしている。
課題/もっと考えないといけない点としては、こんな感じか。

  • 1. Assertionを返すタイミング
  • 2. 他のEndpointで使えるAccess Tokensを返すタイミング

1については、Artifact Binding(AB)ではToken Endpointでやっている。OPとしてはできれば一緒の方がいいが、JSONPの実装も必要になるのは微妙。
2のAccess TokensについてはMLで @_nat 氏がメールで流していたのでABもまだ決まってないかも。

ただ、LoA 0なんてこんなものなのかもしれない。

引き続き考えてみよう。