OAuth2 認証: Authentik による安全なログインの実装

Authentik をアイデンティティ プロバイダーとして使用して OAuth2 認証を実装します。 OIDC フロー、トークン管理、セッション処理、セキュリティのベスト プラクティスをカバーする完全なガイド。

E

ECOSIRE Research and Development Team

ECOSIREチーム

2026年3月5日2 分で読める383 語数

OAuth2 認証: Authentik を使用した安全なログインの実装

認証は Web アプリケーションの中で最もセキュリティが重要なコンポーネントですが、データ侵害の 61% には資格情報の漏洩が関係しています。 Authentik のような専用の ID プロバイダーを使用して OAuth2 を実装すると、認証の問題がアプリケーション ロジックから分離され、シングル サインオン、MFA、一元的なユーザー管理が可能になります。

重要なポイント

  • PKCE を使用した OAuth2 認証コード フローは、Web アプリケーションに推奨されるパターンです
  • Authentik は、OIDC、SAML、および LDAP をサポートするセルフホステッド ID プロバイダーを提供します
  • トークン ストレージ用の HttpOnly Cookie が XSS ベースのトークン盗難を防止します
  • 短い TTL のワンタイム交換コードにより、URL でのトークンの露出を防止します

OAuth2 フローの概要

PKCE を使用した認証コード フロー

  1. ユーザーが「ログイン」をクリック: アプリケーションは Authentik 認証エンドポイントにリダイレクトします
  2. ユーザー認証: Authentik ログイン ページに入力された資格情報 (および MFA)
  3. 認証コードが発行されました: Authentik は有効期間の短いコードをリダイレクトして返します
  4. トークン交換: バックエンドはアクセス トークンとリフレッシュ トークンのコードを交換します。
  5. セッションが確立されました: HttpOnly Cookie に保存されたトークン

このフローにより、資格情報がアプリケーションに触れることはなく、トークンはサーバー間で交換され、認可コードは短い TTL で使い捨てになります。


本物のセットアップ

プロバイダーの構成

Authentik で、機密クライアント タイプ、一意のクライアント ID、強力なクライアント シークレット、正確なリダイレクト URI、openid/プロファイル/電子メール スコープ、および適切なトークンの有効期間 (アクセス: 5 ~ 15 分、更新: 7 ~ 30 日) を使用して OAuth2/OIDC プロバイダーを作成します。

プロバイダーを Authentik アプリケーションにバインドし、グループ メンバーシップ、属性、または IP 制限に基づいたポリシーを通じてアクセスを制御します。

多要素認証

MFA オプションを構成します: TOTP (Google Authenticator、Authy)、WebAuthn (ハードウェア セキュリティ キー、生体認証)、およびフォールバックとしての SMS/電子メール コード。


バックエンドの実装

認可リダイレクト

client_id、response_type=code、redirect_uri、スコープ、ランダム状態パラメータ (CSRF 保護)、および PKCE code_challenge を使用してユーザーを Authentik にリダイレクトします。

トークン交換

コールバック時に、grant_type=authorization_code、受信したコード、redirect_uri、クライアント資格情報、PKCE code_verifier を使用して認証コードをサーバー間で交換します。応答には、access_token、refresh_token、id_token、および有効期限情報が含まれます。

安全なトークンストレージ

トークンを localStorage または sessionStorage に保存しないでください。トークンは、XSS ペイロードを含むあらゆる JavaScript からアクセスできます。 Secure フラグ、SameSite=Lax、および適切な有効期限を指定した HttpOnly Cookie を使用します。


フロントエンドの統合

ログインの流れ

ユーザーが「サインイン」をクリックし、フロントエンドが認可 URL にリダイレクトし、Authentik でユーザーが認証され (アプリが資格情報を参照することはありません)、Authentik がコードでリダイレクトし、バックエンドがコードを交換して HttpOnly Cookie を設定し、フロントエンドが現在のユーザー データのセッション エンドポイントを呼び出します。

セッション管理

マウント時に GET /auth/session を呼び出す useAuth() フックを作成します。認証された場合はユーザーデータを返し、認証されなかった場合はログインにリダイレクトします。ログアウト時に、POST /auth/logout を呼び出して Cookie をクリアします。

保護されたルート

ミドルウェアを使用して、ページをレンダリングする前に認証されていないユーザーをリダイレクトします。 Next.js では、proxy.ts ファイルが保護されたルート上の認証 Cookie をチェックすることでこれを処理します。


セキュリティのベストプラクティス

トークンのセキュリティ

  • HttpOnly Cookie のみを使用します -- トークンを JavaScript に公開しないでください
  • アクセス トークンの有効期間が短い (5 ~ 15 分)
  • ローテーションによるトークンのリフレッシュ (使用するたびに新しいリフレッシュ・トークン)
  • クライアント シークレットはバックエンドにのみ保存され、フロントエンド コードには保存されません

リダイレクトセキュリティ

  • すべてのリダイレクト URL を許可リストと照合して検証します。
  • // (プロトコル相対 URL) で始まるリダイレクトを拒否する
  • URLパラメータにトークンを含めないでください
  • 60 秒の TTL でワンタイム交換コードを使用する

セッションセキュリティ

  • 認証後にセッション識別子を再生成します
  • アイドルタイムアウト(30分)と絶対タイムアウト(8時間)を実装
  • 監査証跡としてすべての認証イベントをログに記録します
  • ブルートフォースを防ぐためのレート制限ログイン試行

Authentik の高度な機能

ユーザー登録

カスタマイズ可能な登録フローを使用してセルフサービスのユーザー登録を構成します。新しいアカウントの必須フィールド、電子メール検証手順、承認ワークフローを定義します。

ブランディングのカスタマイズ

カスタム CSS、ロゴ、テーマを Authentik ログイン ページに適用して、シームレスなブランド エクスペリエンスを実現します。カスタム ブランドは、CSS ボリューム マウントまたは Django ORM branding_custom_css フィールドを通じて適用する必要があります。

ユーザーフェデレーション

LDAP/Active Directory 同期を介して Authentik を外部ユーザー ディレクトリに接続し、既存のエンタープライズ ユーザーがアカウントを再作成せずに認証できるようにします。


よくある質問

Q: なぜ Auth0 や Keycloak ではなく Authentik を使うのですか?

Authentik は自己ホスト型 (完全なデータ制御)、オープンソースであり、最新の UI を備えています。 Auth0 は、ユーザーごとの価格が段階的に上昇する SaaS です。 Keycloak は自己ホスト型ですが、学習曲線が急峻で、UI が古いです。 Authentik は、機能、使いやすさ、コストのバランスを保っています。

Q: Authentik は数千のユーザーを処理できますか?

はい。 Django と PostgreSQL 上に構築された Authentik は、大規模なユーザー ベースを処理します。 100,000 ユーザーを超える場合は、適切なデータベース リソースを確保し、水平スケーリングを検討してください。

Q: 複数のアプリケーションにわたって SSO を実装するにはどうすればよいですか?

各アプリケーションを、独自のプロバイダーを備えた個別の Authentik アプリケーションとして構成します。ユーザーは一度認証すると、接続されているすべてのアプリケーションに Authentik セッション経由で自動的にサインインします。

Q: ソーシャル ログインについてはどうですか?

Authentik は、ソーシャル ログイン ソース (Google、GitHub、Microsoft、その他の OAuth2 プロバイダー) をそのままサポートしています。ユーザーは、ソーシャル アカウントを自分の Authentik ID にリンクして、ログインを便利にすることができます。


次は何ですか

専用の ID プロバイダーを使用した OAuth2 は、ほとんどの Web アプリケーションにとって最も影響力のあるセキュリティの改善です。これにより、資格情報の処理が不要になり、MFA が有効になり、一元的な監査ログが提供されます。

Contact ECOSIRE for authentication implementation help, or explore our Odoo implementation services for secure ERP deployment.


ECOSIRE が発行 -- エンタープライズ ソフトウェア ソリューションによるビジネスの拡大を支援します。

E

執筆者

ECOSIRE Research and Development Team

ECOSIREでエンタープライズグレードのデジタル製品を開発。Odoo統合、eコマース自動化、AI搭載ビジネスソリューションに関するインサイトを共有しています。

WhatsAppでチャット