keycloakをownCloud Infinite ScaleのIDPとして設定する方法

このガイドでは、OAuth 2.0 を基盤とするアイデンティティレイヤーである OpenID Connect (OIDC) を使用して、ownCloud Infinite Scale (oCIS) を Keycloak に接続する方法を説明します。Keycloak はユーザーを認証し、oCIS は Keycloak が発行する署名付き ID およびアクセス情報を信頼します。ブラウザベースのサインインには HTTPS リダイレクトが使用され、oCIS は Keycloak の検出エンドポイントと署名キーエンドポイントにもアクセスする必要があります。

2026年10月6日現在、ownCloudの最新の管理ドキュメントでは、これらの設定はInfinite Scale 9.0の項目に記載されています。公式のKeycloakデプロイメント例は便利な出発点となりますが、Composeファイルとレルムのエクスポートは変更される可能性があります。互換性のあるイメージバージョンを固定し、バージョン管理されていない例を盲目的にコピーするのではなく、デプロイするファイルをレビューしてください。

ブラウザベースのownCloudサインインとIDプロバイダー間の通信はHTTPS経由で行われます。
ブラウザはownCloudから起動し、安全なサインインフローに従ってIDプロバイダーにアクセスし、認証後にownCloudに戻ります。

OIDC を構成する前に必要なもの

oCIS のパブリック HTTPS アドレス (例: https://cloud.example.com) と Keycloak のパブリック HTTPS アドレス (例: )を準備してくださいhttps://sso.example.com。どちらのアドレスも、ユーザーのブラウザから正しく解決できる必要があります。また、oCIS サーバーは Keycloak の OIDC メタデータと公開署名キーにアクセスできる必要があります。リバースプロキシがどちらかのサービスのフロントエンドとして機能する場合は、そのパブリックホスト名と転送ヘッダーを統一的に設定してください。

  • 正常に動作するownCloud Infinite Scaleのデプロイメントと、その環境またはCompose構成への管理者アクセス権。
  • 正常に動作するKeycloakレルムと管理者アクセス権限が必要です。レルムとは、ユーザー、クライアント、ロール、およびID設定のためのKeycloak名前空間です。
  • ブラウザとサーバーの両方から信頼されているTLS証明書で、KeycloakのTLS証明書を検証するものです。本番環境では証明書の検証を無効にしないでください。
  • アカウントのマッチングに関する決定:既存のoCISユーザーを安定したIDクレームに接続するか、必要な書き込み権限を持つユーザーバックエンドを使用して初回ログイン時のアカウントプロビジョニングを有効にするか。
Keycloakレルムの発行者URLと、そのOpenID Connect検出ドキュメントのURLをペアにしたもの。
レルム発行者はベース URL です。検出メタデータを確認するには、/.well-known/openid-configuration を追加してください。

1. 正確なKeycloak発行者を見つける

Keycloak では、OIDC 発行者は通常、管理コンソール URL や検出ドキュメント URL ではなく、レルム URL です。 という名前のレルムの場合team、 のようになりますhttps://sso.example.com/realms/team。古いインストールやパスプレフィックス付きのデプロイメントでは異なる場合があるため、値を記憶から構築しないでください。 でレルムの検出ドキュメントを開きhttps://sso.example.com/realms/team/.well-known/openid-configuration、そのプロパティの値をissuer正確にコピーしてください。

Keycloakにアクセスできるサーバーから、以下のコマンドでドキュメントを検査できます。

curl -fsS https://sso.example.com/realms/team/.well-known/openid-configuration

返された発行者が、oCISで設定するスキーム、ホスト、パス、レルム名と同じであることを確認してください。OpenID Connectは発行者のIDを厳密に検証します。リバースプロキシのホスト名が一致しない、または余分なスラッシュがあると、ログインが失敗する可能性があります。

Keycloakレルム検出エンドポイントへのターミナルリクエストと、JSON形式の発行者レスポンス。
Keycloakにアクセスできるホストから検出リクエストを実行し、返された発行者をOCIS_OIDC_ISSUERと完全に比較します。

2. ownCloud Web用のOIDCクライアントを登録する

クライアントとは、Keycloak がどのサービスがサインインを要求できるかを決定するために使用するアプリケーション登録のことです。oCIS で使用されるレルムで OpenID Connect クライアントを作成または変更します。 などのクライアント ID web、またはカスタム値を使用し、それがWEB_OIDC_CLIENT_IDoCIS の値と一致していることを確認してください。公式の ownCloud の例では、webデフォルト値として を使用しています。

ブラウザベースのクライアントの場合は、標準の認証コードフローと、公式のサンプルレルムに準拠したパブリッククライアント構成を使用してください。デプロイメントに必要な正確な HTTPS リダイレクトとログアウト後のリダイレクトパターンを入力してください。https://cloud.example.com/*すべてのホストに適用される広範なワイルドカードよりも、 のような狭いホスト名パターンの方が監査が容易です。デプロイメントに必要な Web オリジンのみを追加してください。パブリック ブラウザ クライアント用のクライアント シークレットを作成して、それをフロントエンド構成に埋め込まないでください。

パブリッククライアント、認証コードフロー、およびHTTPSリダイレクトURIを含むKeycloak OpenID Connectクライアントの例。
ownCloud Webの場合、公開クライアントIDと許可されたリダイレクトURIをownCloudホスト名に合わせてください。

3. クレームと範囲を確認する

OIDCクレームは、トークンに含まれる、またはuser-infoエンドポイントから返されるID属性です。少なくとも、ユーザー名クレームは慎重に選択してください。ownCloudプロキシはデフォルトでpreferred_usernameユーザー解決に使用され、Keycloakの例ではWebクライアントを標準のプロファイルおよびメールスコープで構成します。ご自身のレルムが実際に使用するクレームを返すことを確認してください。クレームの可用性は、クライアントスコープとプロトコルマッパーによって異なります。

既存のアカウントの場合、設定されたクレームは対応する安定したownCloudユーザー属性にマッピングされている必要があります。ユーザー名またはメールアドレスが変更された場合、それを永続的な識別子として使用すると、アカウントのマッチングに問題が発生する可能性があります。クレームはsubIDプロバイダーごとに一意かつ安定していることが保証されていますが、既存のユーザー名と一致しない場合があります。すべてのユーザーにアクセスを許可する前に、管理者以外のアカウントを使用してアカウントのマッピングをテストしてください。

概念構成ビューにおけるKeycloak OIDCスコープとpreferred_usernameクレームのマッピング。
IDトークンまたはユーザー情報応答に、ownCloudが解決するように設定されている安定したユーザー名クレームが含まれていることを確認してください。

4. キークロークに無限スケールをポイントする

oCISデプロイメントの環境設定で、以下の値を設定してください。この例ではHTTPSとKeycloakレルム()を想定しています/realms/team。ご自身のURLを使用してください。このYAML形式のブロックは例示であり、Docker Compose、Kubernetes、systemdなどのデプロイメント方法では環境変数の表現方法が異なります。

OCIS_URL: https://cloud.example.com
OCIS_OIDC_ISSUER: https://sso.example.com/realms/team
PROXY_OIDC_REWRITE_WELLKNOWN: "true"
WEB_OIDC_CLIENT_ID: web
PROXY_USER_OIDC_CLAIM: preferred_username
OCIS_EXCLUDE_RUN_SERVICES: idp

OCIS_OIDC_ISSUER外部IDプロバイダを選択します。PROXY_OIDC_REWRITE_WELLKNOWN=trueプロキシがOpenID Connect検出エンドポイントを構成済みの発行者に書き換えるようにします。ownCloudは、デスクトップおよびモバイルクライアントがプロバイダを検出するためにこれが必要であることを文書化しています。KeycloakWEB_OIDC_CLIENT_IDクライアントと一致する必要があります。除外すると、idp組み込みプロバイダがアクティブなログインプロバイダとして起動されないよう、ownCloudのKeycloakの例に従います。

OIDC発行者、WebクライアントID、および検出書き換えオプションを設定する環境構成例。
発行者IDとクライアントIDは、デプロイメント構成に保持してください。例として挙げたクライアントIDは、Keycloakに登録されているものと一致している必要があります。

oCIS が初回ログイン時にアカウントを作成するようにするには、PROXY_AUTOPROVISION_ACCOUNTS=true書き込み可能なユーザーバックエンドを使用して Graph サービスを設定および構成します。PROXY_USER_OIDC_CLAIMと をPROXY_AUTOPROVISION_CLAIM_USERNAME同じクレームに設定します。ユーザー名属性については、ownCloud のドキュメントを参照してくださいPROXY_USER_CS3_CLAIM=username。自動プロビジョニングはオプションであり、認証とは別にテストする必要があります。受信クレームが一意で、意図どおりにマッピングされている場合を除き、有効にしないでください。

5. コンテンツセキュリティポリシーでIDプロバイダーを許可する

Infinite Scale は、Web クライアントが接続できる外部オリジンを制御するためにコンテンツ セキュリティ ポリシー (CSP) を使用します。ownCloud のドキュメントによると、Keycloak などの外部 ID プロバイダーには適切な CSP 定義が必要です。ログイン ボタンが表示されるものの、ブラウザがリクエストをブロックする場合は、ブラウザのコンソールで CSP エラーを確認してください。ポリシーを設定しPROXY_CSP_CONFIG_FILE_LOCATION、デプロイメントに必要な Keycloak オリジンとディレクティブのみを許可します。ファイルを変更した後は、プロキシまたはデプロイメントを再起動してください。すべてのオリジンを許可することで接続の問題を解決しないでください。

6. 再起動して、フロー全体を確認します。

環境変更を適用し、普段管理に使用している方法でoCISデプロイメントを再起動してください。共通の再起動コマンドはありません。Composeプロジェクト、Kubernetesワークロード、systemdサービスでは制御方法が異なります。次に、チェーン内の各リンクを確認してください。

  1. Keycloak ディスカバリ URL を開きissuer、 、authorization_endpoint、token_endpoint、 を含む JSON が返されることを確認しますjwks_uri。
  2. ownCloudのWeb URLをプライベートブラウザウィンドウで開きます。ブラウザが目的のKeycloakレルムにリダイレクトされることを確認してください。
  3. テストアカウントでサインインし、ブラウザがリダイレクトループを起こさずに同じownCloudホスト名に戻ることを確認してください。
  4. Infinite Scaleに、新規作成された重複ユーザーではなく、意図したユーザーが表示され、想定されるリソースのみにアクセスできることを確認してください。
  5. サインアウトをテストした後、別のアカウントで同じ手順を繰り返してください。デスクトップまたはモバイルクライアントが対象範囲に含まれる場合は、それぞれの検出とサインインを個別にテストしてください。
発行者、認証、トークン、およびJWKSエンドポイントを含むOpenID Connect検出ドキュメントのブラウザ表示。
検出ドキュメントには、ownCloudがOIDC認証を完了するために必要な発行者とエンドポイントが記載されています。
ユーザー、ownCloud Infinite Scale、およびKeycloak間のブラウザ認証フローの例。
Keycloakがユーザー認証を完了すると、ブラウザはownCloudに戻り、ownCloudはファイルを開く前にOIDC応答を検証します。

よくある失敗とその意味

症状まずチェック
発行者不一致または無効なトークンOCIS_OIDC_ISSUER開示文書の値と文字単位で比較するissuer。
KeycloakでリダイレクトURIエラーが発生しましたクライアントの有効なリダイレクトURLとログアウト後のURLを、HTTPSとパスを含む実際のownCloudの公開URLと照合します。
ログインはブラウザでは機能しますが、デスクトップまたはモバイルクライアントでは機能しません。PROXY_OIDC_REWRITE_WELLKNOWN=trueownCloudのURLで提供される検出応答を確認し、検査してください。
ブラウザコンソールはブロックされたリクエストを報告しますCSPを確認し、必要な指示に従ってKeycloakオリジンを許可してください。
ユーザーがサインインしたが、アカウントエラーまたは重複が表示されるユーザー名の主張、トークンまたはユーザー情報レスポンスにおけるその値、および既存のアカウントとのマッピングを確認してください。
サーバーからのTLSまたは検出要求が失敗しましたDNS、リバースプロキシルーティング、証明書チェーンの信頼性、およびoCISホストがKeycloakにアクセスできることを確認してください。

生産チェックリスト

  • Pinは、フローティングlatestタグに頼るのではなく、ownCloudとKeycloakのバージョンをテストしました。
  • 公開サービスにはHTTPSを使用し、証明書の検証機能を維持してください。ownCloudは、安全性の低いTLSオーバーライドは本番環境での使用には不向きであると明記しています。
  • Keycloak管理者認証情報を保護し、Keycloakデータベースとレルム構成をバックアップし、Keycloak管理アクセスを制限してください。
  • リダイレクトURIとWebオリジンは、実際のownCloudホスト名に限定してください。
  • 選択した識別子クレームと、ユーザー名、レルム名、発行者URL、またはクライアントIDを変更した場合の影響について文書化してください。
  • 本番環境のインスタンスを切り替える前に、復旧アクセスをテストし、以前の構成への計画的なロールバックを保持してください。

公式資料

コメントを残す

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

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

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のどちらであるかを特定し、適切なログを検査し、一般的な原因を安全に修正し、ウイルス対策サービスの復旧を確認します。