堅牢な認証基盤の実現: TypeScriptで代数的データ型を活用する by kosui

関数型まつり2025
採択
公募セッション10分 (LT)
公募セッション Beginner 導入事例

堅牢な認証基盤の実現: TypeScriptで代数的データ型を活用する

kosui_me kosui kosui_me
1

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 導入事例

セッションの概要

概要

医療業界向けに複数のSaaSプロダクトを提供するコンパウンドスタートアップ「カケハシ」では、OIDC (OpenID Connect) 対応の共通認証基盤を開発・運用中です。OIDC対応の認証基盤の開発では、画面をまたぎながら多様なパラメータを取り扱うため、不正な状態遷移やバリデーション漏れが大きなセキュリティリスクとなります。本セッションでは、TypeScriptで代数的データ型 (Algebraic Data Types; ADT) を活用し、以下のような特徴的なポイントを押さえて実装した事例を紹介します。

認証フローの状態遷移

OIDCを利用した認証フローでは、多数のパラメータを扱う複雑なバリデーションが要求されるうえ、アカウント選択→認証→同意といったステップを画面遷移を伴いながら進める必要があるため、状態管理も非常に煩雑になります。

そこで、 「アカウント選択済み」「認証中」「同意完了」など、認証フローの状態と振る舞いを代数的データ型で表現します。これにより、型システムを活用して不正な状態遷移(例: 同意せずに認証を終了、画面Aをスキップして画面Bに直行してしまう)を排除できます。

バリデーション漏れの防止

代数的データ型は、バリデーション漏れの防止にも有効です。様々なユースケースで利用できるように設計されたOIDCでは、数多くのパラメータをバリデーションする必要があります。

そこで、バリデーションの状態を代数的データ型で表現することで、不正なパラメータが渡されることを防止します。

対象

  • TypeScriptや関数型ドメインモデリングに興味のあるエンジニア
  • OIDC対応の認証フローを安全に実装したい開発者
  • 表現力の高い型システムをセキュリティ向上に活かしたい方