OpenID Connect Core 1.0 の輪読会をした
こんにちは、 simomu です。今日は社内勉強会の一環として OpenID Connect Core 1.0 の輪読会を実施した話をします。
発端
発端は OpenID Summit Tokyo 2024 の中のセッションの一つである「デジタルアイデンティティの技術を学ぼう!~認証認可にまつわる標準仕様文書を読んでみよう~」を聞いたことで、今まで少し苦手意識のあった標準仕様文章をちゃんと読んでみようと思ったことがきっかけでした。
また、ソーシャルPLUS は複数のソーシャルログインを統合するサービスを提供しており、Open ID Connect に馴染みの深いプロダクトを開発・運用しています。
そのため、特にソーシャルログイン機能の開発に関わるメンバーは一度ちゃんと読んで全員が同じ土台に立った状態になったほうがいいだろうと考え、OpenID Connect Core 1.0 の輪読会を開催することになりました。
輪読会
今回対象にした仕様は、OpenID Connect Core 1.0 と、その前提になっている RFC 6749 The OAuth 2.0 Authorization Framework の2つです。
毎週1時間で 1 回あたり大体 2 ~ 3 Section ぐらい、内容が多い Section では適度に分割しながら輪読していきました。
1クールアニメ弱ぐらいの回数で完走
進め方としては、当番の人が担当範囲の内容のサマリーを喋りつつ、疑問に思ったことや深堀りしたい話題を都度議論していく形式をとり、「実際の OpenID Provider だとこうなっている」とか「仮に自分達で OpenID Provider を実装するとなったときに具体的にどうするのだろうか?」みたいなことを議論しました。
輪読会の議事録を一部抜粋
実際にやってみて
今回読んだ仕様は OIDC-J のワーキンググループの方が日本語訳したものだったので、いわゆる技術文書を初めてしっかり読む人にとっても取っ掛かりがつきやすいものだったと思います。
「デジタルアイデンティティの技術を学ぼう!~認証認可にまつわる標準仕様文書を読んでみよう~」の発表の中にあったように、RFC 等の仕様書は仕様の要求レベルを示すキーワードが決まっているという話をしたことも、仕様を読み進める上でいい共通認識が取れて良かったです。
輪読会の議事録を一部抜粋
内容に関しては、もともとソーシャルログイン機能の開発に関わるメンバーは OpenID Connect に触れる機会が多いですが、普段あまり使わない
- 5.5 Requesting Claims using the "claims" Request Parameter
- 6 Passing Request Parameters as JWTs
あたりの仕様は、普段我々が目にする OpenID Provider の中でもサポートしているサービスがあまりなかったため、初めて知るメンバーも多く興味深かったです。
また、ただ漫然と読むだけではなく実装するならどうやるのか、どこに気をつけるべきかみたいなことを参加メンバーと議論できたのは有意義な時間になったと思います。もしかしたら、仕様を読みながら小さな OpenID Provider を実際に作ってみる、というのをやっても面白かったかもしれないですね。
まとめと今後
今回は社内勉強会の一環として、OpenID Connect Core 1.0 の輪読会を行った話をしました。
今回輪読を行った仕様は先述の通り OpenID Connect Core 1.0 と RFC 6749 The OAuth 2.0 Authorization Framework だけであり、OpenID Connect や OAuth 2.0 の関連仕様は他にも色々存在するため、慣れてきた頃に第2回と称して周辺仕様の輪読会を開くのも良さそうです。
候補としては
- RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usag(アクセストークンの渡し方の話)
- RFC 7636: Proof Key for Code Exchange by OAuth Public Clients(PKCE の話)
- OpenID Connect Discovery 1.0
あたりが良さそうでしょうか。
また、いわゆる技術文書を読むトレーニングにはなったと思うので、今後は認証認可以外の技術文書・仕様も積極的に読んでいこうと思いました。
Discussion