メンバー: 四谷 兼三, 北島 武浩

カテゴリー: Underpinning

タグ: SSO, SAML, OpenID Connect, Browser Extension

背景

現在のインターネットでは、日常的に様々な認証・認可プロトコルが利用されているが、その仕組みはブラックボックス化している。

目的

認証・認可の過程を可視化することで、認証・認可システムの開発者・管理者の負担を軽減し、最新の認証技術の普及に貢献する。

概要

ブラウザとWebアプリケーション間のシングルサインオン(SSO)の過程を可視化する SSOView というChromeブラウザ拡張を開発している。本ツールでは、利用者がブラウザのサイドパネルでキャプチャを開始・停止すると、SSOの一連のやり取り(以下、セッション)を記録・解析し、その流れを独自にデザインしたセッション詳細表示画面に表示する。現在はSAMLに対応しているが、キャプチャできるのはサイドパネルを開いているタブ内で実行されたセッションに限られる。別のタブで実行されるセッションのキャプチャは開発中であり、OpenID Connectにも今後対応する予定である。

成果

  • ソフトウェア: SSOView(Chromeブラウザ拡張、BSD 3-Clauseライセンス)
    • 現在は外部公開版の開発初期段階のため、インストール手順やドキュメントは整備中である

進捗

FY2026 Q2

  • 別タブで開くログイン画面への対応: 複数タブの同時キャプチャに向けて、キャプチャ状態を管理するイベントの記録方法やキャプチャデータの管理方法を全面的に見直し、複数タブを並行して処理するための基盤を整備した。今後、この基盤の上に必要な機能を実装していく
  • 外部公開: Chromeウェブストアでの公開に必要な一連の手順を事前に確認するため、検証用のブラウザ拡張を作成し、実際に公開した

FY2026 Q1

  • 不具合修正: 特定の条件下でセッション詳細表示画面の一部の表示が崩れる問題などを修正した
  • ソースコードの整理: リポジトリの公開に向け、モジュール構成の整理やテストコード内の機微な情報の除去などを実施した
  • テストの改善: テスト環境を更新し、テストカバレッジの向上を図った
  • 外部公開: ブラウザ拡張を配布するための準備を進めた
    • GitHubでリポジトリを公開した
    • Chromeウェブストアにデベロッパー アカウント(IIJ Research Laboratory名義)を登録した

FY2025 Q4

  • セッション詳細表示機能の開発: 細かな不具合の修正や単体テストの作成などを行い、品質を向上させた
  • サービスワーカーの開発: バックグラウンドでキャプチャや解析を担うサービスワーカーについて、セッションの開始時にブラウザの別のタブが開かれるケースへの対応方法を調査した
  • サイドパネルの開発: 統合済みのセッション詳細表示機能とコードベースを統一するため、リファクタリングを行い、サービスワーカーが提供するAPIを新版へ移行した
  • 実装の統合: 分割して実装していたサイドパネルやセッション詳細表示画面などを統合し、基本機能の実装がほぼ完了した
  • 社内公開: マニュアルや配布物と、それらを作成するためのCI(継続的インテグレーション)環境を整備し、3月末に社内向けに公開した

FY2025 Q3

  • セッション詳細表示機能の開発: 個別のコンポーネントとして実装していた画面構成要素を結合し、画面表示の基本機能を完成させた。また、バックエンドとなるサービスワーカーとの連携処理を改善し、保守性や拡張性を向上させた
  • サイドパネルの開発: 前四半期に続き、デザインの改善によるユーザビリティの向上に取り組んだ。特に、社内向けのデモンストレーションで得た知見をデザインに反映し、画面の単機能化・単純化や、視覚効果による分かりやすさの向上など、UIの改善を図った

FY2025 Q2

  • セッション詳細表示機能の開発: ユーザビリティを向上させるため、動作確認用デモ版で用いた画面デザインの改善に取り組んだ。画面構成要素の実装方法も改善し(SVGからHTML+CSSへの移行やTailwind CSSの導入など)、保守性を向上させた
  • サイドパネルの開発: 画面デザインを見直し、ユーザビリティの向上に取り組んだ。画面を機能ごとに分離して単機能化することで、操作を単純化した。また、操作系をボタンからトグルスイッチへ変更して処理状態を視覚的に把握しやすくするなど、UIの改善を図った

FY2025 Q1

  • セッション詳細表示機能の開発: 動作確認用デモ版の実装で得た知見を基に、ユーザビリティを考慮したUIのデザインに取り組んだ。認証フローを表すオブジェクトの描画をSVGからHTML+CSSへ移行するため、モックの試作と検証を行った
  • サイドパネルの開発: セッション詳細表示画面との統一感を持たせるため、テーマおよびダークモードの導入といったデザインの改善を図った。また、想定していた機能が一通り実装できたため、不具合および脆弱性の修正に取り組んだ

FY2024 Q4

  • セッション詳細表示機能の開発: キャプチャしたSAMLセッションのデータを解析し、その結果をシーケンス図形式の分析レポートとして表示するUIの実装を進め、正常な認証フローのデータを表示できるようにした
  • サイドパネルの開発: UIの実装が一段落したため、保留していたテストを作成した。UIのテスト用に、Webブラウザ上で動作するテストフレームワークを導入し、その実行環境を整備した。作成したテストのカバレッジは、平均で70〜80%程度となった

FY2024 Q3

  • サイドパネルの開発: メインUIであるサイドパネル画面の実装を進め、制御用UIやSAMLセッション状態表示機能など、基本機能が一通り動作する段階に到達した
  • サービスワーカーの開発: バックグラウンドでSAMLセッションをキャプチャ・解析する処理や、キャプチャしたセッションのインポート・エクスポートなどの機能を実装した

FY2024 Q2

  • 開発環境構築: ローカルテスト用のIdP(Identity Provider)およびSP(Service Provider)のサーバ環境を構築した
  • 機能仕様検討: UIを含む最終的なプロダクトの仕様と、リリースまでのマイルストーンを策定した
  • 社内向けベータ版の開発: トラフィックのキャプチャ処理や、メインの制御用UIであるサイドパネルなどを実装した

FY2024 Q1

  • 開発に着手した
  • PoC(概念実証)開発: ブラウザ拡張APIを調査し、シングルサインオン可視化ツールの実装に必要な機能(リクエスト・レスポンスのキャプチャなど)が実現できることを確認した
  • フレームワーク調査: ブラウザ拡張開発用フレームワークを調査し、その導入によるメリット・デメリットを評価した。その結果、当面は採用を保留することとした

PAGE TOP