何かと言うと、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なんてこんなものなのかもしれない。
引き続き考えてみよう。