本文へ移動

外部アカウント認証(OIDC / OAuth)

外部アカウント認証では、QQ、Google、Microsoft、GitHub、または OIDC 互換のアイデンティティプロバイダーを TOTP 認証情報へ紐付けます。利用できるのは TOTP ログインモード だけです。外部サービスでのログインに成功した後も、fn-knock のセッションとサービススコープが適用されます。

QQ は組み込み連携を使用

QQ は fn-knock に組み込まれた共用プロバイダーです。QQ アプリの登録や、Client ID、Client Secret、Issuer の入力、Callback URL の手動登録は必要ありません。プロバイダーを追加した後、利用者ごとに QQ アカウントを対象の TOTP 認証情報へ紐付ける必要があります。

詳しい前提条件、紐付け用招待、コールバック要件、解除方法については、QQ クイックログインの連携を参照してください。

Google、Microsoft、GitHub、カスタム OIDC

  1. 認証 Host が、インターネットからアクセスできる HTTPS アドレスとして設定されていることを確認します。
  2. 認証設定上部の操作メニューから OIDC 設定 を開き、プロバイダーを追加します。
  3. fn-knock に表示された Callback URL を変更せず、そのまま外部プロバイダーのコールバック URL 一覧へ登録します。
  4. プロバイダーが要求する Client ID と Client Secret を入力します。Microsoft では commonorganizations、またはテナント ID を指定でき、カスタム OIDC では Issuer も必要です。
  5. Scopes を確認します。入力値は空白またはカンマで区切れます。プロバイダーがユーザーを識別するために必要な openid と、必要なユーザー情報のスコープは必ず残してください。
  6. 対象の TOTP 認証情報で クイックログインを管理 → 外部アカウントの紐付け を開き、招待を生成して認可と紐付けを完了します。
  7. シークレットウィンドウでログインページから動作を確認し、その後で TOTP のサービススコープを確認します。

Callback URL には、利用者から実際に見える認証 Host を使用する必要があります。localhost、コンテナ名、LAN 内の IP、誤ったポートを指定すると、外部プロバイダーにコールバックを拒否されます。QQ の動的なコールバックはシステムが処理するため、ここで説明した手動登録の手順は適用されません。

通常のプロバイダーは、必須の接続パラメーターが揃っていれば有効な状態で作成されます。不足している場合は、設定が必要 な下書きとして保存されます。編集時に Client Secret を空欄のままにすると、現在の値が維持されます。プロバイダーを無効にすると、そのログイン項目は非表示または拒否されますが、後で再び有効にできるよう設定は保持されます。

アクセス範囲

OIDC は独立した管理者 ID ではありません。紐付け先 TOTP のサブドメイン範囲を継承します。紐付けを解除すると外部アカウントではログインできなくなりますが、TOTP 自体は削除されません。プロバイダーを削除すると、そのプロバイダーに属する外部アカウントの紐付けも削除されます。実行前に、すべての利用者が TOTP または別の復旧手段を利用できることを確認してください。

紐付け用の招待は 30 分間有効で、認可を完了した外部 ID を現在の TOTP へ紐付けます。招待リンクは機密性の高い認可情報です。グループチャット、サポートチケット、公開ページへ貼り付けないでください。紐付けが完了したら、クイックログイン管理画面でプロバイダー、アカウント、Subject、最終使用時刻を確認します。

よくある問題

現象確認項目
ログインページに外部アカウントのボタンがない現在のモードが TOTP ログインモードで、プロバイダーが有効になっているか
プロバイダーにコールバックを拒否されるCallback URL、HTTPS、許可した redirect URI、ドメイン、ポート
コールバック後に未紐付けと表示されるfn-knock で外部アカウントと TOTP の紐付けを先に完了しているか
ログイン後もアクセスを拒否される紐付け先 TOTP のサービススコープと、対象 Host のポリシー

QQ コミュニティ:1081609274