🎉

最適な認証基盤を構築するための技術選定をまとめてみた

に公開

はじめまして、_minoです!

この記事では、アプリケーションの入り口となる認証基盤について、要件・仕様や運用コスト、スケールを見越した技術選定を行うために、認証サービスをまとめました。
実案件で候補として上がったもの/検討事項や、先輩との議論を踏まえたポイントを整理しています!

書きたいことが多く、内容がかなり盛り盛りになっています😅
(どの技術を選ぶか考えるのって、楽しいですよね!)

👥 対象読者

・フロントエンド/バックエンドの方
・リードエンジニア / テックリードの方
・個人開発をしている方
・エンジニアリングが好きな方

🚀 マネージド型認証サービス(クラウド認証型)

マネージド型とは、ユーザーデータや認証処理は全て認証サービスのサーバーで管理され、開発者はAPIを呼び出すだけで認証機能を利用できます。

1. Clerk

▪️概要
React/Next.js に最適化されたマネージド認証サービスです。
豊富なUIコンポーネントと直感的なダッシュボードにより、迅速な実装と優れた開発体験を提供しています。

https://clerk.com/

▪️機能・サポート状況

認証方式 導入しやすさ / UI 提供 Next.js相性(RSC対応) 言語対応(SDK対応) その他
JWT + セッション併用 ◎(かなり豊富)→ こちら ◎(多言語SDKサポート) クロスサブドメイン SSOに対応。

▪️プラン別機能・コスト

無料プラン Proプラン
月額料金 $0/月 $25/月
作成可能なプロジェクト数 無制限 無制限
月間アクティブユーザー 10,000まで無料 10,000まで無料
追加ユーザー $0.02/ユーザー $0.02/ユーザー
ソーシャルログイン 3プロバイダーまで ⚪︎
カスタムブランディング × ⚪︎
月間アクティブ組織 100まで無料 無制限
組織メンバー 1企業5人まで 無制限
カスタム役割・権限 × ⚪︎
ドメイン制限 × ⚪︎
エンタープライズSSO × ⚪︎
開発メンバーの追加アカウント 1人あたり $10/月 追加料金なし

2. Stack Auth

▪️概要
開発者体験を重視した新世代のマネージド認証サービスです。
TypeScript完全対応で無料プランから多機能を利用でき、柔軟なカスタマイズが可能です。セルフホストすることもできます。

https://stack-auth.com/

▪️機能・サポート状況

認証方式 導入しやすさ / UI 提供 Next.js相性(RSC対応) 言語対応(SDK対応) その他
JWT + セッション併用 ◎(かなり豊富)→ こちら △(現在はNext.js、React、JavaScript SDKのみ提供) セルフホストも可能。

▪️プラン別機能・コスト

無料プラン Teamプラン
月額料金 $0 $49
作成可能なプロジェクト数 無制限 無制限
月間ユーザー数 10,000まで無料 50,000まで無料
追加ユーザー ×(アップグレード必要) ×(アップグレード必要)
ソーシャルログイン ⚪︎ ⚪︎
カスタムブランディング ⚪︎ ⚪︎
組織数 無制限 無制限
組織メンバー 無制限 無制限
カスタム役割・権限 ⚪︎ ⚪︎
ドメイン制限 × ×
エンタープライズSSO × ×
開発メンバーの追加アカウント 1人まで無料 3人まで無料 (追加$49/人)

3. Firebase Auth

▪️概要
Google が提供するマネージド認証サービスです。
大規模対応が可能で、他のGCPサービスとの連携に優れた機能を提供しています。

https://firebase.google.com/docs/auth?hl=ja

▪️機能・サポート状況

認証方式 導入しやすさ / UI 提供 Next.js相性(RSC対応) 言語対応(SDK対応) その他
JWT+ リフレッシュトークン △(あるがいまいち)→こちら △(カスタムで実装する必要ある) ◎(多言語SDKサポート) Identity Platform併用により、SAML、OIDC、多要素認証、エンタープライズサポートなどの追加機能が利用可能になります。

▪️プラン別機能・コスト

項目 無料プラン Blazeプラン(従量課金)
月額料金 $0 $0
作成可能なプロジェクト数 無制限 無制限
月間アクティブユーザー 50,000まで無料 50,000まで無料
追加ユーザー ×(Blazeプランへ移行) $0.0025/ユーザー
日間アクティブユーザー 3,000まで無料 無制限
ソーシャルログイン ⚪︎ ⚪︎
カスタムブランディング △ (制限あり) ⚪︎
組織数 × ×
組織メンバー × ×
カスタム役割・権限 × △ (Identity Platform併用)
ドメイン制限 ⚪︎ ⚪︎
エンタープライズSSO × $0.015/ユーザー
開発メンバーの追加アカウント 無制限 無制限

4. Supabase Auth

▪️概要
「Firebase の代替」を目指すオープンソース系認証サービスです。
リアルタイム機能やRow Level Securityなど、データベース中心の設計が特徴です。

https://supabase.com/docs/guides/auth

▪️機能・サポート状況

認証方式 導入しやすさ / UI 提供 Next.js相性(RSC対応) 言語対応(SDK対応) その他
JWT ベース認証 ⚪︎(豊富)→ こちら ◎(多言語SDKサポート) データベースとの連携がスムーズで、行レベルでのアクセス制御設定が簡単にできる。

▪️プラン別機能・コスト

無料プラン Proプラン
月額料金 $0 $25/月
作成可能なプロジェクト数 2プロジェクトまで無料 無制限
月間アクティブユーザー 50,000まで無料 100,000まで無料
追加ユーザー ×(アップグレード必要) $0.00325/ユーザー
ソーシャルログイン ⚪︎ ⚪︎
カスタムブランディング × ⚪︎
組織数 × ×
組織メンバー × ×
カスタム役割・権限 ⚪︎ ⚪︎
ドメイン制限 × ×
エンタープライズSSO (SAML) × 50ユーザーまで(追加$0.015/ユーザー)
開発メンバーの追加アカウント 無制限 無制限

5. Auth0

▪️概要
エンタープライズ向けマネージド認証サービスです。
豊富なSSO対応と高度なセキュリティ機能を持ち、B2C・B2B両方に対応しています。

https://auth0.com/

▪️機能・サポート状況

認証方式 導入しやすさ / UI 提供 Next.js相性(RSC対応) 言語対応(SDK対応) その他
JWT(JSON Web Tokens)+ OpenID Connect (OIDC) △(事前構築されたログイン画面を提供) ◎(多言語SDKサポート) エンタープライズ機能が豊富。

▪️プラン別機能・コスト

無料プラン(B2C) 無料プラン(B2B) Essentialプラン(B2C) Essentialプラン(B2B)
月額料金 $0 $0 $35/月 $150/月
作成可能なプロジェクト数 無制限 無制限 無制限 無制限
月間アクティブユーザー 25,000まで無料 500まで無料 500まで無料 500まで無料
追加ユーザー ×(アップグレード必要) ×(アップグレード必要) $0.07/ユーザー 要問い合わせ
ソーシャルログイン ⚪︎ ⚪︎ ⚪︎ ⚪︎
カスタムブランディング ⚪︎ ⚪︎ ⚪︎ ⚪︎
組織数 10まで 無制限 10まで 無制限
組織メンバー 無制限 無制限 無制限 無制限
カスタム役割・権限 × × ⚪︎ ⚪︎
ドメイン制限 × × ⚪︎ ⚪︎
エンタープライズSSO × × × 3接続まで
開発メンバーの追加アカウント 3人まで 3人まで 無制限 無制限

🛵 セルフホスト型認証サービス(自前認証型)

セルフホスト型とは、認証システムは自分のサーバーで動作し、ユーザーデータも自分のデータベースに保存します。

1. Better Auth

▪️概要
TypeScript向けのフレームワーク非依存の認証・認可ライブラリです。
包括的な機能セットとプラグインエコシステムにより、2FA・マルチテナント対応などの高度な機能を簡単に実装できます。

https://www.better-auth.com/

▪️機能・サポート状況

認証方式 導入しやすさ / UI 提供 Next.js相性(RSC対応) 言語対応(SDK対応) その他
セッション中心 + JWT追加可能 ⚪︎(豊富)→ こちら △(TypeScript環境,Python) 豊富なプラグインエコシステム

▪️その他・特徴
プラグイン型軽量設計のため必要な機能のみ追加可能かつ軽量
・TypeScriptベースでReact、Vue、Next.js等どこでも利用可能でフレームワーク変更時も設定変更不要
・マルチテナント、SSO、アクセス制御などエンタープライズ機能を標準サポート
・主要DB・ORM対応でCLIによる自動テーブル生成により連携が簡単
・多機能ゆえ初回セットアップに時間要するが、ドキュメント充実で基本認証は数行で実装可能

2. Auth.js

▪️概要
オープンソースの認証ライブラリです。
標準Web APIベースでランタイム非依存、複数のモダンフレームワークに対応し、OAuth・JWT・データベースセッション両方をサポートしています。

https://authjs.dev/

▪️機能・サポート状況

認証方式 導入しやすさ / UI 提供 Next.js相性(RSC対応) 言語対応(SDK対応) その他
JWT or セッション(DB)連携 △(あるがいまいち) ◎(v5で対応) △(TypeScript環境限定) -

▪️その他・特徴
・標準Web APIベースで軽量、50以上のOAuthプロバイダーに対応
・v5で設定が大幅簡素化、開発体験がいい
JWT・Database戦略を用途に応じて選択可能で柔軟性が高い
・包括的UIライブラリは提供されず基本的なコンポーネントのみのため独自実装が必要
・TypeScript環境前提でフレームワークでの利用も可能

3. SuperTokens

▪️概要
オープンソースの認証・認可サービスです。
セルフホストまたはマネージドサービスとして利用可能で、独自のアーキテクチャによりAPIレイヤー経由でセキュアなセッション管理を提供しています。

https://supertokens.com/

▪️機能・サポート状況

認証方式 導入しやすさ / UI 提供 Next.js相性(RSC対応) 言語対応(SDK対応) その他
JWT + セッション併用 ⚪︎(React製Pre-built UI完備) ⚪︎(多言語SDKサポート) -

▪️その他・特徴
独自の3層アーキテクチャで認証ロジックの柔軟なカスタマイズが可能
セルフホスト・マネージドサービス選択可能でエンタープライズ要件に対応
・React製Pre-built UIで迅速な実装が可能、Vue/Angularでも利用可能
・認証サービスの中では最新で、現在も発展途上段階にある

📌 結局どの認証サービスを選定する良さそうか

スピード重視

→ Clerk

現在携わっているプロジェクトでも導入しており、かなり開発体験がいいと感じました。UI・ドキュメントも親切で、豊富なコンポーネントにより爆速で認証画面を構築することができます。特にReact/Next.js環境なら迷わずこれ。

既存サービス連携重視

→ Firebase Auth / Supabase Auth

Firebase Auth: GCPもしくはFirebaseを既に使用している場合におすすめ。他のGoogleサービスとのシームレスな連携が最大の魅力。
Supabase Auth: SupabaseのDBやStorageを使用している場合に最適。Row Level Securityやリアルタイム機能との連携により、データベース中心の設計がスムーズに行える。

そして両者共にコストがかなり安い。

エンタープライズ向け重視

→ Auth0

SAML、OIDC、エンタープライズSSOといった企業必須の認証方式を標準サポート。B2B特化プランでは組織管理、ドメイン制限、カスタム役割・権限設定が可能で、大規模ユーザー数にも対応できるエンタープライズグレードのセキュリティ機能を提供。既に多くの大企業での導入実績があり、安心して利用できる。
※個人的な経験では、ユーザー数が少ない場合はコスト面・機能面でオーバースペックになりがちです。

柔軟性・カスタマイズ重視

→ Better Auth

フレームワークに依存せず、自社のDBや独自システムでユーザー管理を行いたい場合に最適。TypeScriptベースで型安全性も確保でき、プラグイン型設計により必要な機能のみを追加可能。将来的なフレームワーク変更にも対応しやすい。

👀 おわり

最後まで読んでくださりありがとうございました!☺️
この記事を通して、少しでもお役に立てば幸いです!

また、個人ブログでも「技術選定に関すること」や「最新技術の分析・深掘り」など学びや知見を発信しています!
https://techbuild.app

過去の執筆記事

https://zenn.dev/m_noto/articles/a73dc4291983e6

Discussion