Keycloak IdP
はじめに
シングルサインオン(SSO)は、ユーザーが一度サインインするだけで、再認証なしに複数のアプリケーションやサービスにアクセスできるようにする技術です。
ウェブポータルがフォーラム、チャット、ブログなどの複数の大規模な独立したセクションを含む場合、ユーザーは1つのサービスで認証手続きを行うことで、複数回の資格情報入力なしに他のすべてのサービスに自動的にアクセスできます。
SSOは常に2つのアプリケーションの共同動作によって保証されます:アイデンティティプロバイダーとサービスプロバイダー(「IdP」と「SP」とも呼ばれます)。ONLYOFFICE SSOはSPのみを実装します。多くの異なるプロバイダーがIdPとして機能できますが、この記事ではKeycloakの実装を考慮します。
KeycloakでのIdPの作成
-
管理者としてKeycloakにサインインします。
-
レルムの管理に移動し、接続を設定するレルムを選択します。
-
クライアントに移動し、クライアントの作成ボタンをクリックします。
-
開いたページで以下を設定します:クライアントタイプフィールドでSAMLを選択します。クライアントIDフィールドに
https://myportal-address.com/sso/metadataを入力し、myportal-address.comをワークスペースのドメイン名に置き換えます。名前と説明フィールドには、クライアントの任意の名前と説明を入力します。
-
次へボタンをクリックします。
-
以下のフィールドに入力します:
注記myportal-address.comをワークスペースのドメイン名に置き換えます。アプリケーションの詳細 ルートURL https://myportal-address.com/ssoホームURL https://myportal-address.com/sso有効なリダイレクトURI https://myportal-address.com/sso/slo/callbackhttps://myportal-address.com/sso/acs有効なログアウト後のリダイレクトURI https://myportal-address.com/sso/slo/callbackマスターSAML処理URL https://myportal-address.com/sso/acs
詳細設定タブで以下のフィールドに入力します:
アサーションコンシューマーサービスPOSTバインディングURL https://myportal-address.com/sso/acsアサーションコンシューマーサービスリダイレクトバインディングURL https://myportal-address.com/sso/acsログアウトサービスPOSTバインディングURL https://myportal-address.com/sso/slo/callbackログアウトサービスリダイレクトバインディングURL https://myportal-address.com/sso/slo/callback
-
保存ボタンをクリックします。
-
SAML機能セクションで、名前IDフォーマットをメールに設定します。
-
署名と暗号化セクションで、アサーションの署名オプションを有効にし、署名アルゴリズムを選択します:RSA_SHA1、RSA_SHA256、またはRSA_SHA512。
-
保存ボタンをクリックします。
-
クライアントスコープセクションに移動し、ワークスペースの名前のリンク
https://myportal-address.com/sso/metadata-dedicatedをクリックします。事前定義されたマッパーを追加ボタンをクリックし、ポップアップウィンドウで以下のマッパーを選択します:
- X500 email
- X500 givenName
- X500 surname
その後、追加ボタンをクリックします。

ONLYOFFICE SPの設定
-
管理者としてONLYOFFICE Appsワークスペースにサインインしていることを確認し、設定メニューに移動し、統合セクションを選択し、シングルサインオンタブを開きます。
-
シングルサインオン認証を有効にするスイッチャーを使用してSSOを有効にし、IdpメタデータXMLのURLフィールドに
https://<keycloakurl>/realms/<realm_name>/protocol/saml/descriptorを貼り付けます。<keycloakurl>と<realm_name>をKeycloakサーバーのアドレスと接続が作成されたレルムの名前に置き換えます。最終的なリンクはブラウザからアクセス可能でなければなりません。
-
上向き矢印のボタンを押してIdPメタデータを読み込みます。ONLYOFFICEサービスプロバイダー設定フォームはKeycloak IdPからのデータで自動的に入力されます。
-
Keycloakで指定されたものと同じデフォルト署名検証アルゴリズムを選択します。
-
NameIdフォーマットをemailAddressに変更します。
-
次に、SP証明書セクションで証明書を作成する必要があります。それを行うには、証明書を追加ボタンをクリックします。
-
開いたモーダルウィンドウで、新しい自己署名証明書を生成リンクをクリックし、使用目的リストから署名と暗号化オプションを選択します。証明書を保存する前に、公開証明書のテキストをクリップボードにコピーし、ファイルに保存してください(Keycloakに必要です)。その後、OKボタンをクリックします。

-
属性マッピングセクションに移動し、次の値を属性に割り当てます:
- 名:urn:oid:2.5.4.42
- 姓:urn:oid:2.5.4.4
- メール:urn:oid:1.2.840.113549.1.9.1
詳細設定セクションでは、デフォルトの認証ページを非表示にし、SSOサービスに自動的にリダイレクトするために認証ページを非表示オプションを選択できます。
デフォルトの認証ページを復元する必要がある場合(IdPサーバーが失敗したときにワークスペースにアクセスできるようにするため)、ブラウザのアドレスバーでワークスペースのドメイン名の後に/login?skipssoredirect=trueキーを追加できます。
-
保存ボタンをクリックします。
-
Keycloakに戻り、暗号化を設定するためにクライアントを開き、キーセクションに移動します。クライアント署名が必要オプションを無効にし、アサーションを暗号化を有効にします。ポップアップウィンドウでインポートを選択し、アーカイブ形式を証明書PEMに設定し、参照ボタンをクリックします。ステップ7から証明書ファイルのパスを指定し、確認をクリックします。
ONLYOFFICE SPとKeycloak IdPの動作確認
-
ONLYOFFICE Appsの認証ページにアクセスします(例:
https://myportal-address.com/login)。 -
シングルサインオンボタンをクリックします。ボタンがない場合、SSOが有効になっていないことを意味します。
-
すべてのSPおよびIdPパラメータが正しく設定されている場合、Keycloak IdPのログインフォームにリダイレクトされます:

-
Keycloakユーザーのログインとパスワードを入力し、サインインボタンをクリックします。
-
資格情報が正しい場合、ワークスペースのメインページにリダイレクトされます(ユーザーが存在しない場合は自動的に作成され、IdPで変更された場合はデータが更新されます)。
