Better Auth(アプリ側の認証ライブラリ)と Keycloak(IdP=認証基盤)は、ざっくり言うと 「アプリに組み込む層」 と 「組織として共通化する認証サーバ層」 の役割分担です。競合というより“組み合わせる/どちらかを選ぶ”対象になります。
それぞれの役割
Better Auth(例:Next.js/Node に組み込む認証)
アプリにログイン機能を実装するためのライブラリセッション管理、Cookie、CSRF、コールバック処理、DB 連携(ユーザー作成/更新)など「アプリ実装の都合」を面倒見てくれる“そのアプリの中で完結する認証”を作りやすい
例:メール+パスワード、Magic Link、ソーシャルログイン(Google/GitHub)などをアプリ主導で実装向いているケース
1プロダクト中心で、まずは早く認証を作りたい認証要件が比較的シンプル(社内SSOや厳格なポリシーが必須ではない)「ユーザーDB」「権限」をアプリが主に持つ設計にしたいKeycloak(IdP / OAuth2・OIDC・SAML を提供する認証サーバ)
認証・SSO・ユーザー管理を“中央集権”で提供するサーバOIDC/OAuth2/SAML の 発行元(トークンを出す側)組織ポリシー(MFA、パスワードルール、アカウントロック、条件付きアクセス、連携IdP、監査ログ等)をまとめて管理複数アプリを SSO でつなぐ、B2B(顧客企業ごとのRealm/テナント)的な構成も取りやすい向いているケース
複数の社内/顧客向けアプリをSSOで統一したいMFAや監査、細かいセキュリティ要件がある将来的にアプリが増える/別言語・別基盤にも同じ認証を使いたい一緒に使うなら:典型的な分担
Keycloak = 認証(ログイン画面とトークン発行)
Better Auth = アプリ側の受け口(セッション化、アプリ用ユーザー情報の同期、画面側の扱いやすさ)
流れ(例)
ユーザーはアプリからKeycloakへリダイレクトしてログイン(OIDC Authorization Code + PKCE が一般的)KeycloakがID/Access Tokenを発行アプリ(Better Auth側)がそれを受け取り、自分のアプリのセッション(Cookie)に変換したり、必要ならユーザーをDBに作成/更新API呼び出しは「アプリのセッション」または「KeycloakのAccess Token」で認可※ただし「Better AuthがKeycloakを“IdPとしてどこまで”サポートしているか」は、アダプタ実装の有無・バージョンで変わるので、実装方針としては「OIDCプロバイダとしてKeycloakを登録できるか(Discovery URL/Client設定)」がポイントになります。
どっちを“主役”にするかの判断基準(超短縮)
SSO/組織ポリシー/複数アプリ前提 → Keycloak中心(アプリはOIDCクライアント)単一アプリでスピード優先、実装の自由度優先 → Better Auth中心(必要なら後でIdP移行)将来はSSOしたいが今は早く作りたい → まずBetter Authで作り、早めにKeycloak/OIDC移行を見越した設計(認可・ユーザIDの持ち方を固定しすぎない)必要なら、前提(B2Cか社内向けか / アプリ数 / MFA要件 / APIは同一ドメインか別か)を教えてくれれば、「Better Auth単体」「Keycloak単体」「併用」のおすすめ構成をもう一段具体化して整理できます。