コンテンツにスキップ

ソーシャルログイン

ソーシャルログイン(外部IDプロバイダー連携)を使用することで、ユーザーは既存のGoogle、Microsoft、GitHubアカウントを使ってAuthrimにログインできます。

対応プロバイダー

Google

OpenID Connect対応。個人/Workspaceアカウントをサポート。

Microsoft

Entra ID(旧Azure AD)対応。マルチテナント、組織、個人アカウントをサポート。

GitHub

OAuth 2.0対応。GitHub Enterprise Serverもサポート。

カスタム

任意のOIDC/OAuth 2.0準拠プロバイダーを設定可能。

なぜソーシャルログインを使うのか?

ユーザー体験の向上

  • 既存アカウントでのワンクリックログイン
  • パスワード不要
  • 登録障壁の低減

セキュリティの強化

  • 大手プロバイダーの認証基盤を活用
  • MFA/2FAを外部IdPに委任可能
  • パスワード管理の負担軽減

JITプロビジョニング

  • 初回ログイン時に自動ユーザー作成
  • メールによる自動アカウントリンク
  • 属性マッピングによるプロファイル同期

認証フロー

sequenceDiagram
    participant User
    participant App as アプリケーション
    participant Authrim
    participant ExtIdP as 外部IdP

    User->>App: 1. "Login with GitHub" クリック
    App->>Authrim: 2. GET /auth/external/github/start
    Authrim->>Authrim: 3. state, nonce, PKCE生成
    Authrim-->>User: 4. 外部IdPへリダイレクト
    User->>ExtIdP: 5. 認証画面
    ExtIdP->>ExtIdP: 6. ユーザー認証
    ExtIdP-->>Authrim: 7. コールバック (認可コード)
    Authrim->>ExtIdP: 8. トークン交換
    ExtIdP-->>Authrim: 9. アクセストークン
    Authrim->>ExtIdP: 10. ユーザー情報取得
    ExtIdP-->>Authrim: 11. ユーザー情報
    Authrim->>Authrim: 12. アカウントリンク処理
    Authrim-->>User: 13. セッション作成 + リダイレクト
    User->>App: 14. 認証完了

プロバイダー設定

  1. Google Cloud Console にアクセス

  2. APIs & ServicesCredentialsCreate CredentialsOAuth client ID

  3. Application type: Web application を選択

  4. Authorized redirect URIs に追加:

    https://your-domain.com/auth/external/google/callback
  5. Client ID と Client Secret を取得

  6. Admin API でプロバイダー登録:

    Terminal window
    curl -X POST "https://your-domain.com/external-idp/admin/providers" \
    -H "Authorization: Bearer ${ADMIN_API_SECRET}" \
    -H "Content-Type: application/json" \
    -d '{
    "template": "google",
    "name": "Google",
    "slug": "google",
    "client_id": "YOUR_GOOGLE_CLIENT_ID.apps.googleusercontent.com",
    "client_secret": "YOUR_GOOGLE_CLIENT_SECRET"
    }'

設定リファレンス

共通フィールド

フィールド必須説明
namestring表示名
slugstring-URLフレンドリーな識別子
client_idstringOAuth Client ID
client_secretstringOAuth Client Secret
enabledboolean-有効/無効(デフォルト: true)

アイデンティティリンク

フィールドデフォルト説明
auto_link_emailtrueメールでの自動アカウントリンク
jit_provisioningtrueJITプロビジョニング(自動ユーザー作成)
require_email_verifiedtrue検証済みメール必須

ユーザーフローエンドポイント

認証開始

GET /auth/external/:provider/start?redirect_uri=https://app.example.com/callback
パラメータ必須説明
redirect_uri認証後のリダイレクト先
tenant_id-テナントID(マルチテナント時)
user_id-リンク先ユーザーID(アカウントリンク時)

セキュリティ

Authrimは以下のセキュリティ機能を自動的に適用します:

  • PKCE: すべての外部IdP認証でS256方式のPKCEを使用
  • State: CSRF攻撃防止のためのcryptographically secureなstateパラメータ
  • Nonce: OIDCプロバイダーでのID Tokenリプレイ攻撃防止
  • Client Secret暗号化: AES-256-GCMで暗号化して保存
  • メール検証: デフォルトで検証済みメールのみ許可

トラブルシューティング

”Provider not found”

  1. プロバイダーが作成されているか確認
  2. slug または id が正しいか確認
  3. enabled: true か確認

”State validation failed”

  1. ユーザーが60秒以上かかっていないか確認
  2. 同じブラウザ/セッションでフローを完了しているか確認
  3. Cookieがブロックされていないか確認

”Provider did not return email”

  1. OAuth Appに適切なスコープ(email)があるか確認
  2. GitHubの場合、user:email スコープが必要
  3. ユーザーがメールを設定しているか確認

参考資料