Chrome拡張を作ってみようといろいろと試しているとGPTからchromiumapp.orgというドメインをOAuth認証に使うコードが示されて、このドメインは何だ?となったので調べたのでメモとして残しておく。
結論から書くと、chromiumapp.org は Google(Chromium プロジェクト)が Chrome拡張/Chrome アプリ専用に確保しているワイルドカードドメインとのことだった。通常の Web サイトとは違い、実際にコンテンツをホストしているわけではなく、主目的は OAuth などの外部認証フローで「拡張機能自身」をリダイレクト先(redirect_uri)として扱えるようにすることとのことだった。
仕組みとしては、
拡張IDでサブドメイン生成
最初拡張IDとはなんぞやと思ったのだけれども、Chromeで拡張機能一覧 chrome://extensions/ を開いたときに導入されている拡張機能とともにIDが振られているのがわかってそれを指している。
それを利用して chrome.identity.getRedirectURL('path') をコールするとブラウザが https://<extension-id>.chromiumapp.org/<path> というURLを生成してくれる
ブラウザがインターセプトしてくれる
認証プロバイダが上記 URL へリダイレクトすると ネットワークに到達する前に Chrome が捕捉 し、launchWebAuthFlow() のコールバックへ最終URLを渡してくれる。
サーバーが不要
開発者が Web サーバを用意する必要はなく、DNS 解決や TLS 証明書も Google が管理してくれる。
というものだった。
(参照先: https://developer.chrome.com/docs/extensions/reference/api/identity?hl=ja )
スマートフォンのWebViewでOAuthの認可をするときに urn:ietf:wg:oauth:2.0:oob をコールバックURLと指定することもあるけれどもそことの違いとして
| 項目 | chromiumapp.orgを使う場合 | urn:ietf:wg:oauth:2.0:oob を使う場合 |
|---|---|---|
| 方式 | ブラウザ内で自動リダイレクトを捕捉 | ブラウザにコードを「表示」して手動コピー or ディープリンク |
| ユーザ操作 | 追加操作なし(即自動処理) | 手動コピペなどが必要な場合が多い |
| 推奨用途 | 拡張・ネイティブアプリの シームレス なログイン体験 | CLI や画面を持たないデスクトップアプリなど |
といった具合でまとめられる。
なるほど、Chrome拡張とかでこういった認証かけているものを見かけていたがこういったやり方で解決していたのかと学びになった。