最適な認証基盤を構築するための技術選定をまとめてみた
はじめまして、_minoです!
この記事では、アプリケーションの入り口となる認証基盤について、要件・仕様や運用コスト、スケールを見越した技術選定を行うために、認証サービスをまとめました。
実案件で候補として上がったもの/検討事項や、先輩との議論を踏まえたポイントを整理しています!
書きたいことが多く、内容がかなり盛り盛りになっています😅
(どの技術を選ぶか考えるのって、楽しいですよね!)
👥 対象読者
・フロントエンド/バックエンドの方
・リードエンジニア / テックリードの方
・個人開発をしている方
・エンジニアリングが好きな方
🚀 マネージド型認証サービス(クラウド認証型)
マネージド型とは、ユーザーデータや認証処理は全て認証サービスのサーバーで管理され、開発者はAPIを呼び出すだけで認証機能を利用できます。
1. Clerk
▪️概要
React/Next.js に最適化されたマネージド認証サービスです。
豊富なUIコンポーネントと直感的なダッシュボードにより、迅速な実装と優れた開発体験を提供しています。
▪️機能・サポート状況
認証方式 | 導入しやすさ / 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完全対応で無料プランから多機能を利用でき、柔軟なカスタマイズが可能です。セルフホストすることもできます。
▪️機能・サポート状況
認証方式 | 導入しやすさ / 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サービスとの連携に優れた機能を提供しています。
▪️機能・サポート状況
認証方式 | 導入しやすさ / 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など、データベース中心の設計が特徴です。
▪️機能・サポート状況
認証方式 | 導入しやすさ / 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両方に対応しています。
▪️機能・サポート状況
認証方式 | 導入しやすさ / 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・マルチテナント対応などの高度な機能を簡単に実装できます。
▪️機能・サポート状況
認証方式 | 導入しやすさ / UI 提供 | Next.js相性(RSC対応) | 言語対応(SDK対応) | その他 |
---|---|---|---|---|
セッション中心 + JWT追加可能 | ⚪︎(豊富)→ こちら | ◎ | △(TypeScript環境,Python) | 豊富なプラグインエコシステム |
▪️その他・特徴
・プラグイン型軽量設計のため必要な機能のみ追加可能かつ軽量
・TypeScriptベースでReact、Vue、Next.js等どこでも利用可能でフレームワーク変更時も設定変更不要
・マルチテナント、SSO、アクセス制御などエンタープライズ機能を標準サポート
・主要DB・ORM対応でCLIによる自動テーブル生成により連携が簡単
・多機能ゆえ初回セットアップに時間要するが、ドキュメント充実で基本認証は数行で実装可能
2. Auth.js
▪️概要
オープンソースの認証ライブラリです。
標準Web APIベースでランタイム非依存、複数のモダンフレームワークに対応し、OAuth・JWT・データベースセッション両方をサポートしています。
▪️機能・サポート状況
認証方式 | 導入しやすさ / UI 提供 | Next.js相性(RSC対応) | 言語対応(SDK対応) | その他 |
---|---|---|---|---|
JWT or セッション(DB)連携 | △(あるがいまいち) | ◎(v5で対応) | △(TypeScript環境限定) | - |
▪️その他・特徴
・標準Web APIベースで軽量、50以上のOAuthプロバイダーに対応
・v5で設定が大幅簡素化、開発体験がいい
・JWT・Database戦略を用途に応じて選択可能で柔軟性が高い
・包括的UIライブラリは提供されず基本的なコンポーネントのみのため独自実装が必要
・TypeScript環境前提でフレームワークでの利用も可能
3. SuperTokens
▪️概要
オープンソースの認証・認可サービスです。
セルフホストまたはマネージドサービスとして利用可能で、独自のアーキテクチャによりAPIレイヤー経由でセキュアなセッション管理を提供しています。
▪️機能・サポート状況
認証方式 | 導入しやすさ / 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ベースで型安全性も確保でき、プラグイン型設計により必要な機能のみを追加可能。将来的なフレームワーク変更にも対応しやすい。
👀 おわり
最後まで読んでくださりありがとうございました!☺️
この記事を通して、少しでもお役に立てば幸いです!
また、個人ブログでも「技術選定に関すること」や「最新技術の分析・深掘り」など学びや知見を発信しています!
過去の執筆記事
Discussion