先日は、「あ」とダケ書かれた状態で本タイトルの記事をリリースしてしまったので、本日、早速記事の内容を書かせて頂きました。
最近、フロントエンドの認証が混沌としてきています。
具体的には、
- 一つは、SPAで使っているImplicitフローがそろそろダメっポイのと。
- もう一つは、Financial-grade API - Part 2で、「JARM」など、色々と仕様が追加されているのですが、その中に「CIBA」なんていうフローが新しく加わって来ています。
などでしょうか。
以下で、其々についてもうチョット詳しく説明したいと思います。
<Implicitフロー代替>
昔から、主にSPAで使っているOAuth2のImplicitフローは危ないと言われ続けていて、OIDCで安全になったと思われていましたが、Financial-grade API - Part 2でToken Bindingなどの策定も進んできたので、「やっぱ、もっと安全にしよう。」と言う事で、昨今、何だかImplicitフロー非推奨の流れになってきています。
詳しくは、今後「OAuth 2.0 Security Best Current Practice」というドラフトに書かれていくようですが、現時点では、Implicitフローの代替は、「
PKCE + Token Binding + Fragment」になるのではないか?と言われています。
<CIBAってどういうフロー?>
フローを見ると、RedirectによるOAuthダンスではなく、OAuth 2.0 Device Flow風で、認証用デバイスへの通知にNB(=スマホのプッシュ通知)を使用している感じの仕様っポイです。
恐らくこのサイトを見ている人は、何かのサイト(MicrosoftアカウントやGoogleアカウント)にログインしようとして、スマホにノーティフィケーションが飛んできて、認可ボタンを押下した経験をお持ちなんじゃないか?と思いますが、アレですアレ。あれがOIDCの拡張仕様に入って来るっポイんです。
また、これに加えてFIDO2やWebAuthnも一般的になって来ていますので、今回はタイトルを「フロントエンドの認証が混沌としてきた」とさせて頂きました。...が、「フロントエンド自体も混沌としている」気がするので、
次回は、「フロントエンド自体も混沌としている」と言う記事でも書こうかと思っています。フロントエンドについて、VB6.0辺りを皮切りに書こうと思います(笑)。
<参考>
マイクロソフト系技術情報 Wiki