Skip to content

No Map Inside

採用面接のテックインタビューで、OIDCの話をしたことがほとんどない。

聞いてみたいことはある。stateとnonceの違いは何か。PKCEは何を解決するのか。OpaqueトークンとJWTの採用基準はどこにあるか。大規模システムではどちらがスケールしやすいか。バックチャンネルログアウトの仕組みを説明してほしい。でもほぼ答えられないだろうとわかっているし、どこかのフィードバックで「圧迫面接だった」と書かれると凹むからやっていない。

OIDCは難しい。OAuthからのつぎはぎプレハブのような仕様で、RFCも混在している。OAuth 2.0、OpenID Connect Core、Discovery、Dynamic Registration。どこからどこまでがOAuthで、どこからがOIDCなのか、境界が曖昧だ。そして状況をさらに混乱させているのは各社の実装だ。走りながら仕様を作った先駆者のGoogleと、仕様をガン無視しているApple。RFCを読んでも実際のプロバイダの挙動と一致しない。正解がどこにあるのかわからなくなる。

自分で実装したことがないと、そもそもなぜOAuthにクライアントの登録が必要なのかがわからない。クライアントクレデンシャルとは何か、IDトークンとアクセストークンは何が違うのか、リフレッシュトークンはなぜ存在するのか、APIスコープの概念もさっぱりだろう。認可コードフローを一度も実装したことがなければ、リダイレクトの往復で何が起きているか想像もつかない。

若手にはやんわり「やっとけ」と言ってはいる。みな興味なさそうだ。気持ちはわかる。覚えることが多く、複雑で、成果物も見えづらい。動いて当たり前で、壊れると大事になる。やりがいの割にリスクが大きい領域に見えるのだろう。

でもWebで何かを作る限り、認証からは逃げられない。いつかそのプレハブの中を歩くことになる。そのとき迷子にならないために、地図くらいは持っておいたほうがいい。