ownCloud Infinite Scaleで二要素認証を設定する方法

ownCloud Infinite Scaleへのサインインに二要素認証(2FA)を必須にするには、ユーザー認証を行うOpenID Connect IDプロバイダー(IDP)で設定を行います。多くの導入環境では、Keycloakで時間ベースワンタイムパスワード(TOTP)を有効にし、サインインを完了する前にユーザー登録を必須にする必要があります。Infinite Scale自体には汎用的なTOTP登録画面は用意されていません。内蔵のIDPは最小限の機能しか備えていないため、ownCloudはより広範なID管理ニーズには外部のOpenID Connectプロバイダーの使用を推奨しており、ドキュメントでは2FAにKeycloakを使用するよう指示しています。

架空の例: Northstar Design は、ownCloud Infinite Scale が既に Keycloak レルム (名前は ) に接続されている架空の 40 人の従業員からなる会社ですfiles。現在、従業員はパスワードでサインインしています。管理者は、従業員に認証アプリを登録させ、次回の認証時にコードを使用するようにしたいと考えています。この例は説明のためのものであり、実際のインストールやテストのレポートではありません。以下の手順は、Keycloak が既に Infinite Scale で使用されている IDP であることを前提としています。そうでない場合は、まず 2 つのサービスを接続するための公式の展開ガイダンスに従ってください。

このガイドに掲載されているインターフェース画像は概念的な例であり、実際のNorthstarまたはownCloudシステムのスクリーンショットではありません。メニューの文言やレイアウトはKeycloakのバージョンによって異なる場合があります。この手順は、2026年10月6日にownCloud Infinite Scale 8.2のドキュメントおよびKeycloak Server Administration Guide 26.8に基づいて検証されました。

ownCloud OIDC発行者とクライアントIDを含む設定画面の例。続いて、クラウドサイトからKeycloakへのサインインリダイレクト。
この架空の設定では、Infinite Scaleはユーザーを設定済みのKeycloak発行元に送ります。正確なOIDC設定は、既存のデプロイメントによって異なります。

Infinite Scaleデプロイメントでは、2FAにどのような変更が加えられるのか

OpenID Connect(OIDC)は、Infinite Scaleが各パスワードを個別に認証するのではなく、IDPに依存することを可能にするサインインプロトコルです。Keycloakはプライマリ認証情報を要求し、認証フローで必要な場合はTOTPなどの第2要素も要求します。Infinite Scaleは、結果として得られるOIDC認証情報を受け取ります。TOTPは、共有シークレットと現在時刻から生成される有効期限の短いコードです。認証アプリは、ユーザーが登録用QRコードをスキャンした際に、このシークレットを保存します。

その分離は重要です。KeycloakでOTPポリシーを設定すると、Keycloakによるユーザー認証方法が変わります。ownCloudのMFAオプションを設定しても、電話番号が登録されたり、TOTP認証情報が作成されたりすることはありません。特に、ownCloudOCIS_MFA_ENABLEDオプションは、IDPがOpenID Connect認証コンテキストクラス参照(ACR)クレームをサポートしている場合に、特定の保護されたルートでステップアップ認証を行うためのものです。これは、すべてのログインに共通のTOTPプロンプトを追加するスイッチではありません。

領域を変更する前に

  • 本番環境のInfinite Scaleクライアントが実際に使用しているIDPとレルムを確認してください。ブラウザのアドレスバーから推測するのではなく、OIDCの発行者IDとクライアントIDをデプロイメント構成と比較してください。
  • 適切なKeycloakレルム用の管理者アカウント、各ユーザーに対応した認証アプリ、およびデバイスを紛失したユーザーのための復旧プロセスを用意してください。
  • KeycloakのログインページとInfinite Scaleが有効な証明書を使用してHTTPS経由でアクセスできることを確認してください。認証情報を変更する際は、既存の管理者セッションを開いたままにしておき、まずは管理者以外のユーザーアカウントでテストを行ってください。
  • すべてのサインイン経路を一覧化します。ブラウザフローはブラウザベースのOIDC認証を制御します。API認証情報、サービスアカウント、アプリパスワード、その他の認証フローは個別に管理される場合があります。

1. Infinite ScaleがKeycloakを使用していることを確認する

Northstarの例では、管理者はWebクライアントが既にfilesレルムにリダイレクトされていることを確認しますhttps://login.example.test/realms/files。ownCloudのデプロイメント例ではOCIS_OIDC_ISSUER、WEB_OIDC_CLIENT_IDKeycloakの設定で、、などの設定を使用しますPROXY_OIDC_REWRITE_WELLKNOWN。これらはデプロイメント構成値であり、一般ユーザーがInfinite ScaleのWebインターフェースで変更するフィールドではありません。

インスタンスがまだ組み込みのIDPを使用している場合は、OTPを強制する前にKeycloakとの統合を別途計画してください。外部IDPを接続するには、発行者URLを入力するだけでなく、クライアント登録、リダイレクトとWebオリジンの設定、トークンクレーム、HTTPS、および使用するデスクトップまたはモバイルクライアントのすべてと連携する必要があります。正確なバージョンとトポロジについては、ownCloudが管理するKeycloakのデプロイメント例を参考にしてください。

2. Keycloakで時間ベースのOTPポリシーを選択します。

Keycloak管理コンソールでファイルレルムを開き、 [認証]、[ポリシー]、[OTPポリシー]の順に選択します。認証アプリには、時間ベースのポリシー(TOTP)を選択してください。KeycloakはカウンターベースのHOTPもサポートしていますが、コードが時間とともに変化するため、電話認証アプリには通常TOTPが適しています。

展開前にポリシーを確認してください。Keycloakでは、ハッシュアルゴリズム、コード長、クロックドリフトウィンドウ、トークン期間、コードの再利用可否などの設定が可能です。まずは、ユーザーが使用している認証アプリでサポートされている値から始めてください。クロックウィンドウを大きくするとクロックドリフトの軽減に役立ちますが、コードが受け入れられる期間も長くなります。サーバーのクロックを同期させ、時間同期の修正の代わりにこのウィンドウを広げることは避けてください。

Keycloak認証ページで、[ポリシー]タブが選択されており、OTPタイプとして「OTPポリシー」と「時間ベース」が表示されています。
レルム内で時間ベースのOTPポリシーを選択することで、ユーザーが互換性のある認証アプリを登録できるようになります。

3. 新規ユーザーにOTP登録を必須とする

「認証」 > 「必須アクション」で、「OTPの設定」が有効になっていることを確認し、それをデフォルトアクションとしてマークします。Keycloakのドキュメントによると、デフォルトの必須アクションは新規ユーザーが初めてログインしたときに適用されます。これにより登録要件が作成され、TOTP認証情報が存在する前にユーザーはセットアップを完了する必要があります。

ブラウザ認証フローも確認してください。標準のKeycloakブラウザフローでは、条件付き2FAサブフローは、ユーザーにOTP認証情報が設定されている場合にOTPの入力を求めます。ユーザーがOTPを設定する必要がない場合は、2要素認証のプロンプトなしで続行できます。通常のパスワード認証または1要素認証ステップを維持し、カスタムフローをバインドする前にフローを慎重にテストしてください。認証フローの変更はレルム全体に影響し、設定ミスがあると管理者がロックアウトされる可能性があります。

Keycloakの必須アクションテーブルで、OTPの設定が有効になっており、新規ユーザーに対してそのデフォルトアクションのチェックボックスが選択されている状態。
「OTPの設定」をデフォルトの必須アクションとしてマークすると、新規作成されたアカウントは初回ログイン時にOTP登録を求められます。

4. 既存ユーザーに登録要件を追加する

デフォルトアクションは、既に存在するアカウントには遡及適用されません。Northstarの現スタッフの場合、管理者はKeycloakレルムで各ユーザーを開き、そのユーザーの必須アクションに「OTPの設定」を追加して変更を保存します。Keycloakには、ユーザーの「認証情報」タブに、OTP設定ページにユーザーを誘導する認証情報リセットメールを送信するオプションも記載されています。アカウント管理プロセスに合った方法を選択し、使用する場合はユーザーがメールを受信できることを確認してください。

大規模なディレクトリの場合は、サポートされている Keycloak 管理インターフェースまたは自動化ツールを使用して、制御された一括処理を計画してください。デフォルトのアクションを有効にしたからといって、全員が登録されたと思い込まないでください。ポリシーを広く適用する前に、テストユーザーを作成し、初回ログイン時の動作を確認してください。

Keycloakの代表アカウントのユーザー詳細。必須ユーザーアクションにOTPの設定が記載されており、保存ボタンがあります。
既存のアカウントの場合、OTPの設定を必須のユーザーアクションとして割り当て、アカウントの変更を保存します。

5. 各ユーザーに認証アプリを登録させる

架空のNorthstar社員であるAlexが次にownCloudにサインインし、Keycloakにリダイレクトされると、KeycloakはAlexにOTPの設定を求めます。Alexは認証アプリを開き、Keycloakが表示するQRコードをスキャンし、アプリに表示されている現在のコードを入力して登録を確定します。QRコードにはTOTPシークレットが含まれているため、ユーザーはこれを認証情報と同様に扱う必要があります。管理者へメールで送信したり、共有チケットに保存したり、信頼できないデバイスでスキャンしたりしないでください。

アプリがコードをスキャンできない場合、Keycloakの設定ページで、基となるキーを手動で入力するよう求められることがあります。ユーザーはそのキーを認証アプリにのみ保存してください。設定ページを閉じる前に、検証手順を完了する必要があります。検証に失敗したコードは、有効期限が切れているか、入力ミスがあるか、またはデバイスの時計が正しくないアプリによって生成された可能性があります。

KeycloakのOTP設定ページの例。汎用的なQRコード型の登録グラフィック、コード入力欄、および「続行」ボタンが含まれています。
Keycloakの登録ページにはQRコードが表示され、認証アプリから取得したコードを入力するようユーザーに求められます。この画像は、UIの概念的な例です。
ファイルアカウントのエントリ、回転する6桁のサンプルコード、およびカウントダウンタイマーが表示された認証アプリの画面例
認証アプリはアカウントごとに変化するコードを生成します。表示される数字はあくまで例であり、使用可能な認証情報ではありません。

6. ポリシーを適用する前に、復旧の準備をしてください。

ユーザーは、スマートフォンを紛失、交換、またはデータ消去した場合に、アクセスを回復する方法を必要とします。Keycloak 26.8 では、リカバリ認証コードを、ブラウザフローで有効化して代替手段として追加できる追加の認証情報として説明しています。Keycloak のバージョンとレルムでこの機能が使用されている場合は、有効化して意図的にテストしてください。ユーザーは、リカバリコードを承認済みのパスワードマネージャーまたはその他の保護されたオフラインの場所に保存し、各コードを機密情報として扱う必要があります。TOTP シークレットを保持している同じ電話アプリには保存しないでください。

レルムでリカバリーコードが有効になっていない場合は、管理者主導のリカバリー手順を文書化してください。OTP認証情報をリセットまたは削除する前に、本人確認を必須としてください。緊急時用の管理者アカウントは、別途厳密に管理されたプロセスで管理し、ユーザー登録の問題がレルム全体のロックアウトに発展しないようにしてください。

マスクされたプレースホルダーコードと確認チェックボックスを含む、Keycloakリカバリ認証コードの例ページ
回復コードが有効になっているレルムの場合、ユーザーが登録を完了する前に、回復コードは安全な場所に保存する必要があります。

7. ownCloudのサインイン手順全体をテストする

登録後、テストアカウントからログアウトし、通常のInfinite Scaleアドレスで再度ログインしてください。ブラウザが想定どおりのKeycloakレルムに到達し、アカウントのパスワードが受け入れられ、時間ベースのコードが要求され、認証が成功した後にownCloudに戻ることを確認してください。その後、サポートされているデスクトップおよびモバイルクライアント、共有リンク、および同じIDプロバイダーに依存する運用ツールをテストしてください。

ブラウザテストが成功したからといって、すべてのクライアントやプロトコルが同じフローを使用しているとは限りません。Keycloakのブラウザフローは、個別の直接認証フローをカバーしていない可能性があり、既存のKeycloakシングルサインオン(SSO)セッションは、別のOTPプロンプトを表示することなく、後続のownCloudログインに対応できます。これは想定されるセッションの再利用であり、認証要素に問題があることを示すものではありません。ポリシーでより頻繁に新しい認証要素が必要な場合は、意図的なセッションポリシーの一環として、KeycloakのSSOおよび認証レベルの設定を確認してください。

ブラウザでownCloud Infinite Scaleの「すべてのファイル」ページを表示した際の、Keycloakのワンタイムコードチャレンジの例
想定されるブラウザの経路では、IDプロバイダーでワンタイムコードの入力を求められ、その後クラウドファイルインターフェースに戻ります。これはあくまでフローの例であり、テスト結果ではありません。

オプション:保護されたルートに対してのみ、ステップアップMFAを要求する

デプロイメントによっては、ユーザーが機密性の高いリソースを開いたときにのみ、2 要素認証を要求する場合があります。Infinite Scale は、OIDC ACR クレームによるルート レベルのステップアップ認証をサポートしています。8.2 のドキュメントでは、OCIS_MFA_ENABLED強制を有効にし、OCIS_MFA_AUTH_LEVEL_NAMESMFA を示す ACR レベルに名前を付けています。IDP はステップアップ認証をサポートし、トークンに一致する ACR 値を発行する必要があります。Keycloak にはこのパターン用の認証レベルと ACR 設定がありますが、そのフロー、要求レベル、およびトークン マッピングは、Infinite Scale で設定された値と一致する必要があります。

OCIS_MFA_ENABLED=true
OCIS_MFA_AUTH_LEVEL_NAMES=advanced

この例はあくまで出発点です。Keycloakadvancedが必須要素の後にそのACR値を返すように実際に設定されている場合にのみ使用してください。必要なレベルなしで保護されたルートが要求された場合、Infinite Scaleはアクセスを拒否し、X-OCIS-MFA-Requiredヘッダー付きの403レスポンスを返す可能性があります。ルートレベルのステップアップは、Keycloakブラウザ認証のたびにTOTPを要求することとは異なります。

よくある問題とその解決策

症状チェックすべき事項
OTPプロンプトは表示されませんアカウントのOTP登録が完了していること、ブラウザフローで設定済みのユーザーに対してOTPステップが実行されること、および既存のSSOセッションで認証が再利用されていないことを確認してください。
新規ユーザーは登録を求められませんOTPの設定が有効になっており、適切なレルムでデフォルトアクションとして設定されていることを確認してください。デフォルトアクションは新規ユーザーに適用されます。既存のアカウントには、必須アクションを割り当てる必要があります。
コードは拒否されましたユーザーがHOTPではなくTOTPを選択したことを確認し、デバイスとサーバーの時計をチェックしてください。ユーザーに次のコード間隔まで待ってから新しいコードを入力するように指示してください。
デスクトップ、モバイル、または自動化ログインが失敗しますクライアントが使用するOIDCまたはその他の認証フローを確認してください。サポートされている各クライアントをテストし、変更がブラウザ以外のサインインにブラウザのみのフローに依存していないことを確認してください。
フローを変更した後、ユーザーがロックアウトされます文書化された管理者復旧手順と保護された緊急アカウントを使用してください。デフォルトフローを再度変更する前に、レルムの最後のフロー変更を確認してください。

公式資料

コメントを残す

ドメイン上でカスタムマトリックスルームエイリアスを設定する方法

ドメイン上でカスタムマトリックスルームエイリアスを設定する方法

Matrixルームエイリアスの仕組み、ドメインとSynapseホームサーバーの準備、フェデレーション委任の設定、カスタムエイリアスの作成、そして安全な検証方法について学びましょう。

ownCloudサーバーで共有ファイルの所有権を移転する方法

ownCloudサーバーで共有ファイルの所有権を移転する方法

ownCloud Serverの管理者が、共有、バージョン、検証を考慮しながら、occを使用して選択したフォルダまたはすべてのファイルを別のユーザーに転送する方法を学びましょう。

Nextcloudの「一部のファイルが整合性チェックに合格していません」という警告を修正する

Nextcloudの「一部のファイルが整合性チェックに合格していません」という警告を修正する

Nextcloudのコード整合性警告の診断方法、変更または欠落したコアファイルの復元方法、余分なファイルやアプリ署名エラーの処理方法、そして修復が安全に行われたことを確認する方法を学びましょう。

Nextcloudデスクトップ同期クライアントが「ファイルの処理中」で停止する問題を修正する

Nextcloudデスクトップ同期クライアントが「ファイルの処理中」で停止する問題を修正する

Nextcloud Desktopが「ファイルの処理中」のまま止まってしまいますか?データにリスクを与えることなく、ブロックしているファイル、同期設定、ネットワーク、ログ、および安全なリセットオプションを診断します。

OCCを使用してNextcloud管理者パスワードをリセットする方法

OCCを使用してNextcloud管理者パスワードをリセットする方法

occコマンドを使用して、紛失したNextcloud管理者パスワードをコマンドラインからリセットします。正しいインストールパスを見つけて、安全にリセットを実行し、アクセスを確認してください。

Jitsi Meet 用の Jibri 録画およびストリーミングサーバーの設定方法

Jitsi Meet 用の Jibri 録画およびストリーミングサーバーの設定方法

Jitsi Meet 用に Docker Compose を使用して Jibri をセットアップします。録画の設定、ストレージ権限の保護、サービスの起動、録画と RTMP ストリームのテストを行います。

コマンドラインからownCloudのファイルバージョン履歴を削除する方法

コマンドラインからownCloudのファイルバージョン履歴を削除する方法

ownCloud Serverの有効期限切れコマンドと完全削除コマンドを比較し、Infinite Scaleの個別のリビジョンワークフローと、クリーンアップを安全に検証する方法を学びましょう。

Jitsiルームの作成を特定の認証済みユーザーのみに制限する方法

Jitsiルームの作成を特定の認証済みユーザーのみに制限する方法

Jitsi Meet の設定で、承認された認証済みユーザーのみがルームを開始できるようにし、許可すればゲストも参加できるようにします。Docker の手順と最新の認証ガイダンスが含まれています。

ownCloudで「WebDAVインターフェースが壊れています」エラーを修正する

ownCloudで「WebDAVインターフェースが壊れています」エラーを修正する

ownCloudのWebDAV警告のトラブルシューティングを行うには、DAVルート、Apacheのリライト、リバースプロキシ、DNS、TLS、およびサーバー側の接続性を確認してください。

ClamAVまたはFreshClamを使用してZimbraのCPU使用率が高い問題を解決する

ClamAVまたはFreshClamを使用してZimbraのCPU使用率が高い問題を解決する

ZimbraでCPU使用率が高い原因がclamdかfreshclamのどちらであるかを特定し、適切なログを検査し、一般的な原因を安全に修正し、ウイルス対策サービスの復旧を確認します。