ownCloud Infinite ScaleをOIDCを使用してKeycloakに接続します。

Keycloakのサインインページにアクセスして認証を行った後、ownCloud Infinite Scaleのログイン画面に戻ってしまう、あるいは「不明なユーザー」エラーが表示されるという問題がよく発生します。一般的な原因としては、レルム発行者が一致しない、Webクライアントが別のサンプルバージョンからコピーされている、またはIDクレームがoCISアカウントと一致しない、などが挙げられます。KeycloakをoCISの外部OpenID Connectプロバイダー(OIDC)として設定し、上記3つの値を一致させて、ブラウザとクライアントがHTTPS経由でプロバイダーにアクセスできることを確認してください。

cloud.example.comこのチュートリアルでは、 oCIS と Keycloak 用に架空のホストを使用していますsso.example.com。設定は ownCloud Infinite Scale 8.2 のドキュメントを参照しています。適用する前に、インストール済みのリリースのドキュメントと名前を比較してください。これは Infinite Scale (oCIS) 用であり、ownCloud Server 10 用ではありません。

1. レルムと検出エンドポイントを確認します

ID プロバイダー (IdP) は、別のサービスのユーザーを認証します。OpenID Connect は、oCIS が Keycloak のログイン情報と ID 情報を信頼できるようにするサインイン プロトコルです。レルムは、Keycloak のユーザー、クライアント、および設定の個別のセットです。oCIS にサービスを提供するレルムを選択し、その発行者 URL を特定します。例のレルムの場合ocis、発行者 URL は ですhttps://sso.example.com/realms/ocis。

oCISを編集する前に、https://sso.example.com/realms/ocis/.well-known/openid-configurationブラウザで開いてください。このOpenID Connect検出ドキュメントには、プロバイダのエンドポイントが記載されています。そのissuer値が、スキーム、ホスト、大文字小文字、パスを含め、レルムURLと完全に一致していることを確認してください。発行者は、管理ページまたは長い検出URLであってはなりません。プロバイダのTLS証明書は、ユーザーのブラウザとoCISサーバー/コンテナの両方で信頼されている必要があります。

OpenID Connect の検出 JSON には、Keycloak レルムの応答に発行者 https://sso.example.com/realms/ocis が表示されます。
発見文書には、oCISで設定されている正確なレルム発行者を報告する必要があります。

検出URLが読み込まれない場合は、まずDNS、リバースプロキシルーティング、ファイアウォール、または証明書の問題を解決してください。ブラウザの応答が成功しただけでは、oCISコンテナがKeycloakに到達できることは証明されません。サーバーのデプロイメントネットワークからのネットワークアクセスも確認してください。OpenID Connectの検出ルールでは、返される発行者が同じプロバイダを識別する必要があります。OpenID Connect検出仕様を参照してください。

2. KeycloakクライアントをoCISウェブアプリにマッチさせる

メンテナンスされているownCloud Keycloakデプロイメント例を起点として、そのレルムファイルをoCISのリリースに合わせてください。バージョンを混在させないでください。現在のcompose例ではWebクライアントIDを使用していますwebが、古いセットアップノートではと記載されていますocis-web。KeycloakとoCISは同じクライアントIDを使用する必要があります。

Keycloakで、選択したレルムとWebクライアントを開きます。サインインフローとクライアントIDをownCloudの例に合わせます。パブリックHTTPSホストを使用して、そのレルムで必要な正確なコールバックアドレスに有効なリダイレクトURIを設定します。Webオリジンはテンプレートの要件に従ってのみ設定します。以下のワイルドカードは例示であり、本番環境での推奨事項ではありません。広範囲なリダイレクトパターンは、意図しない宛先につながる可能性があります。ラベルはKeycloakのリリースによって異なります。

Keycloakクライアント設定の例では、WebクライアントIDと、有効なリダイレクトURIおよびWebオリジンのフィールドが表示されています。
ご使用のoCISバージョンに一致するレルムテンプレートから、リダイレクトURIとクライアントIDを使用してください。表示されている値は例です。

Keycloak の公開ホスト名を安定させてください。TLS がリバースプロキシで終了する場合は、リバースプロキシの公開ホスト名と信頼済み​​プロキシヘッダーを設定してください。設定しないと、リダイレクトで誤ったスキームやホストが使用される可能性があります。Keycloakリバースプロキシのガイダンスに従ってください。Keycloak を公開する前に、デモ管理者の認証情報を置き換えてください。

3. oCISを同じ発行者とクライアントに向ける

これらの変数を、デプロイメント構成のoCISサービスに追加し、他の設定とシークレットはそのまま保持してください。サンプルでは、​​架空のURLと現在のサンプルクライアントIDを使用しています。

OCIS_URL=https://cloud.example.com
OCIS_OIDC_ISSUER=https://sso.example.com/realms/ocis
WEB_OIDC_CLIENT_ID=web
PROXY_OIDC_REWRITE_WELLKNOWN=true
OCIS_EXCLUDE_RUN_SERVICES=idp

OCIS_URLは公開されている oCIS アドレスです。発行者 ID とクライアント ID は Keycloak と完全に一致する必要があります。書き換えにより、デスクトップ、Android、iOS クライアントで使用される検出パスが有効になります。除外すると、idp外部 IdP 展開における組み込みプロバイダーが停止します。設定で意図的にそのサービスを使用する場合は、これを省略してください。

設定エディタには、OCIS_URL、OCIS_OIDC_ISSUER、PROXY_OIDC_REWRITE_WELLKNOWN、およびOCIS_EXCLUDE_RUN_SERVICESが表示されます。
これらのoCIS設定は、認証をKeycloakに向け、OIDC検出を外部プロバイダーにルーティングします。

変更は、デプロイメントの通常の再起動プロセスで適用します。Docker Compose を使用する場合は、docker compose up -dcompose ディレクトリから実行して変更されたサービスを再作成し、oCIS ログを確認してください。本番環境では、信頼できる TLS 証明書を使用してください。ownCloud の例ではINSECURE=true、ローカル自己署名証明書オプションとしてマークされています。インターネットに接続されているサーバーでは、これを削除するか、false に設定してください。ownCloud では、本番環境では使用しないようにとも述べていますPROXY_OIDC_INSECURE。

4. oCISがユーザーを識別する方法を決定する

クレームとは、OIDC IDフィールド(例:sub、、、preferred_usernameまたはemail)のことです。oCISはこれを使用してアカウントを検索します。既存ユーザーの場合は、ユーザー名、メールアドレス、ユーザーIDなど、ユーザーが既に使用している属性にマッピングしてください。一致しない場合、Keycloakがログインを受け入れた後でも「ユーザーが見つかりません」というエラーが発生する可能性があります。

初回ログイン時にアカウントを作成するには、PROXY_AUTOPROVISION_ACCOUNTS=true意図した場合にのみ、かつoCIS Graphユーザーバックエンドで書き込みを有効にした後に設定してください。識別子は一意で安定しており、再割り当てされない必要があります。ownCloudはsub適切な識別子として識別します。変更できない場合にのみ、メールアドレスまたは優先ユーザー名を使用してください。作成クレームと検索クレームを一致させてください。

PROXY_AUTOPROVISION_ACCOUNTS=true
PROXY_AUTOPROVISION_CLAIM_USERNAME=sub
PROXY_USER_OIDC_CLAIM=sub
PROXY_USER_CS3_CLAIM=username

Keycloakがトークンまたはuserinfoレスポンスで選択したクレームを返すことを確認してください。自動プロビジョニングが無効になっている場合、サインイン時に新しいユーザーは作成されません。読み取り専用のGraphバックエンドを使用している場合、プロビジョニングが失敗する可能性があります。グループまたはロールのマッピングは、サインインが正常に完了してから追加してください。書き込みアクセスを有効にしたり、IDマッピングを変更したりする前に、 ownCloudの8.2プロキシおよび自動プロビジョニングに関するドキュメントを参照してください。

サインインフロー全体を確認する

プライベートブラウザウィンドウでoCISを開き、サインインしてください。Keycloakレルムにアクセスし、認証後、想定されるアカウントと同じoCISホストに戻るはずです。まずは既存のアカウントでテストしてください。プロビジョニングが有効になっている場合は、承認済みの新規ユーザーを1人テストし、意図したユーザー名で一度作成されることを確認してください。サインアウトして、再度ログインしてください。

ドキュメント、写真、プロジェクト、共有フォルダを含むクラウドファイル一覧の横に、サインインフォームが表示されます。
認証が成功すると、ブラウザはクラウドファイルインターフェースに戻ります。

デスクトップまたはモバイル検出の場合は、を開きますhttps://cloud.example.com/.well-known/openid-configuration。書き換えにより、Keycloak のプロバイダー情報が公開されます。ログイン ループは、リダイレクト ホストまたはスキームの不一致を示しています。ログイン成功後にユーザーが拒否された場合は、クレームの欠落または と の不一致を示していPROXY_USER_OIDC_CLAIMますPROXY_USER_CS3_CLAIM。

コメントを残す

ownCloudのApache .htaccess警告を安全にクリアする

ownCloudのApache .htaccess警告を安全にクリアする

ownCloudのウェブルートに対してのみAllowOverride Allを設定し、アクティブなApache仮想ホストを検証し、安全にリロードして.htaccessルールを復元します。

ownCloud Enterprise Auditingを設定し、ログを確認する

ownCloudのエンタープライズ監査アプリを有効にし、admin_auditイベントを保護されたログファイルにルーティングして、実際のユーザー操作が記録されていることを確認します。

ownCloud Infinite ScaleをOIDCを使用してKeycloakに接続します。

ownCloud Infinite ScaleをOIDCを使用してKeycloakに接続します。

Keycloakのレルム発行者、Webクライアント、およびユーザークレームを整合させることで、ownCloud Infinite ScaleがWebクライアントとモバイルクライアント全体でユーザーを確実にサインインできるようにします。

ownCloudのファイルを共有を失うことなく新しい所有者に移動する

ownCloudのoccコマンドを使用して、所有ファイルと共有フォルダを転送し、何が残るかを把握し、古いアカウントを削除する前にアクセス権を確認してください。

ownCloud 10のクエリを安全にインデックス管理することで高速化

ownCloud 10のデータベースインデックスに注意が必要な場合、サポートされているスキーマ更新を安全に適用する方法、クエリチューニングやデータベースの変更がより適切な解決策となる場合について学びましょう。

ownCloudでLinuxマウントなしでSMB/CIFS共有をマウントする

外部ストレージを介してWindowsまたはSambaネットワーク共有をownCloudに接続し、認証情報を確認し、アクセスできないフォルダのトラブルシューティングを安全に行います。

occコマンドを使用してownCloudファイルバージョンを安全に削除する

occコマンドを使用してownCloudファイルバージョンを安全に削除する

1つのアカウントまたはすべてのユーザーについて、保存されているownCloud Server Classicのすべてのファイルバージョンを削除し、完全削除と保持期間に基づく有効期限切れを区別します。

ownCloudモバイル接続が拒否されましたか?URLと接続可能性を確認してください。

ownCloudモバイル接続が拒否されましたか?URLと接続可能性を確認してください。

ownCloudモバイル接続拒否の原因を特定するには、サーバーURL、電話ネットワーク、HTTPSエンドポイント、およびサーバーログを正しい順序で確認してください。

systemdタイマーを使用してownCloudのバックグラウンドジョブを確実に実行する

オンデマンドのジョブ実行を、ownCloudでサポートされているocc system:cronコマンドを15分ごとに実行するsystemdタイマーに置き換えます。

壊れたルートを見つけてownCloud WebDAV同期を復元する

Apache、Nginx、またはリバースプロキシを経由してWebDAVリクエストをトレースし、認証済みのPROPFINDテストを使用してownCloudの同期が機能することを確認します。