ONLYOFFICE SPとAD FS IdPの設定
はじめに
シングルサインオン(SSO)は、ユーザーが一度だけサインインすることで、再認証なしに複数のアプリケーションやサービスにアクセスできる技術です。
例えば、ウェブポータルがフォーラム、チャット、ブログなどの大規模な独立したセクションを含んでいる場合、ユーザーは一つのサービスで認証手続きを行うことで、他のすべてのサービスに対しても複数回の資格情報入力なしに自動的にアクセスできます。
SSOは常に、アイデンティティプロバイダーとサービスプロバイダー(以下「IdP」と「SP」と呼ぶ)の2つのアプリケーションの共同作業によって保証されます。ONLYOFFICE SSOはSPのみを実装しています。IdPとしては多くの異なるプロバイダーが存在しますが、この記事ではActive Directory Federation Services (AD FS)の実装を考慮します。
ONLYOFFICEデスクトップエディターをONLYOFFICE Workspaceに接続する際にSSOを使用したい場合は、コントロールパネルでプライベートルームを無効にしてください。
システム要件
システム要件には、ONLYOFFICE SSOと正しく動作することがテストされ証明された以下のソフトウェアが含まれます:
- Windows Server 2008 R2、Windows Server 2016;
- AD FS バージョン3.0以降。
SSO設定のためのONLYOFFICE Workspaceの準備
- Docker用のONLYOFFICE WorkspaceまたはSSOサポート付きの任意の後続バージョンをインストールします(AD FSはCommunity Server v9.5以降でサポートされています)。
- ドメイン名を追加します。例:
myportal-address.com。 - ポータルでコントロールパネル > HTTPSに移動し、トラフィックの暗号化のためにletsencrypt証明書を作成して適用します(ポータルでHTTPSを有効にするため)。
SSO設定のためのAD FSの準備
-
すべての公式アップデートとパッチを含む最新のAD DS(Active Directory Domain Service)バージョンをインストールします。
-
すべての公式アップデートとパッチを含む最新のAD FSバージョンをインストールします。
AD FSをゼロから展開するには、次の手順を使用できます。
-
AD FSメタデータへのリンクが公開されていることを確認します。これを行うには、
-
サーバーマネージャーで、ツール > AD FS管理を開きます。
-
AD FS \ サービス \ エンドポイントに移動します。
-
テーブル内のフェデレーションメタデータタイプの行を見つけます。IdPメタデータへのリンクは次のスキームに基づいて構築されます:
https://{ad-fs-domain}/{path-to-FederationMetadata.xml}
または、次のPowerShellコマンドを使用できます:
PS C:\Users\Administrator> (Get-ADFSEndpoint | Where {$_.Protocol -eq "FederationMetadata" -or $_.Protocol -eq "Federation Metadata"}).FullUrl.ToString()結果として、次のようなリンクを得る必要があります:
https://onlyofficevm.northeurope.cloudapp.azure.com/FederationMetadata/2007-06/FederationMetadata.xml -
AD FSが正しく起動していることを確認するために、受け取ったリンクをウェブブラウザで開きます。xmlが表示されるかダウンロードされるはずです。次のステップで必要となるメタデータxmlへのリンクをコピーします。
-
ONLYOFFICE SPの設定
-
ONLYOFFICEのコントロールパネルに管理者としてサインインしていることを確認し、左サイドバーのポータル設定セクションでSSOタブをクリックします。
注記ONLYOFFICEポータルでは、組織のために1つのエンタープライズアイデンティティプロバイダーのみを登録できます。

-
シングルサインオン認証を有効にするスイッチャーを使用してSSOを有効にし、AD FSからコピーしたリンクをIdPメタデータXMLのURLフィールドに貼り付けます。

上向き矢印のボタンを押してIdPメタデータをロードします。ONLYOFFICE SP設定フォームはAD FS IdPからのデータで自動的に入力されます。
-
カスタムログインボタンキャプションフィールドには、デフォルトのもの(シングルサインオン)の代わりに任意のテキストを入力できます。このテキストは、ONLYOFFICE認証ページでシングルサインオンサービスを使用してポータルにログインするためのボタンに表示されます。
-
NameIDフォーマットセレクターで、次の値を選択します:urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress。
-
IdP公開証明書 \ 詳細設定セクションで、ログアウトレスポンス署名を検証オプションのチェックを外します。AD FSはデフォルトでそれを必要としません。

-
次に、SP証明書セクションに証明書を追加する必要があります。自己署名証明書を生成するか、他の証明書を追加できます。
注記新しい証明書ウィンドウで、使用目的セレクターを署名と暗号化オプションに切り替えます。AD FS IdPはデジタル署名の確認とデータの暗号化を自動的に設定されているためです。

ほぼ同じ結果が得られるはずです:

-
SP証明書 \ 詳細設定で、ログアウトレスポンスに署名のチェックを外します。AD FSはデフォルトでそれを必要としません。
注記属性マッピングフォームを調整する必要はありません。これらのパラメータは後でAD FS IdPで設定します。詳細設定セクションでは、デフォルトの認証ページを非表示にし、SSOサービスに自動的にリダイレクトするために認証ページを非表示オプションをチェックできます。
重要デフォルトの認証ページを復元する必要がある場合(IDPサーバーが故障した場合にポータルにアクセスできるようにするため)、ブラウザのアドレスバーでポータルのドメイン名の後に
/Auth.aspx?skipssoredirect=trueキーを追加できます。 -
保存ボタンをクリックします。ONLYOFFICE SPメタデータセクションが開かれるはずです。

SPメタデータXMLをダウンロードボタンをクリックして、設定が公開されていることを確認します。XMLファイルの内容が表示されるはずです。
-
SPエンティティID(メタデータXMLへのリンク)フィールドからONLYOFFICE SPメタデータへのリンクをコピーし、AD FSがインストールされているマシンに移動します。

AD FS IdPの設定
-
.NETアプリケーションの強力な認証を有効にします。
.NET Framework 3.5/4.0/4.5.xアプリケーションは、
SchUseStrongCryptoレジストリキーを有効にすることで、デフォルトプロトコルをTLS 1.2に切り替えることができます。このレジストリキーは、.NETアプリケーションがTLS 1.2を使用するように強制します。注記Windows Server 2016およびWindows Server 2012 R2上のAD FSでは、.NET Framework 4.0/4.5.xキーを使用する必要があります:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319
.NET Framework 3.5の場合は、次のレジストリキーを使用します:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SchUseStrongCrypto"=dword:00000001.NET Framework 4.0/4.5.xの場合は、次のレジストリキーを使用します:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 "SchUseStrongCrypto"=dword:00000001
または、次のPowerShellコマンドを使用することもできます:
New-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -name 'SchUseStrongCrypto' -value '1' -PropertyType 'DWord' -Force | Out-Null詳細については、この記事を参照してください。
-
サーバーマネージャーで、ツール > AD FS管理を開きます。

-
AD FS管理パネルで、信頼関係 > 依存パーティ信頼を選択します。右側の依存パーティ信頼の追加...オプションをクリックします。依存パーティ信頼ウィザードが開きます。

-
ウィザードウィンドウで、オンラインまたはローカルネットワーク上で公開された依存パーティのデータをインポートラジオボタンを選択し、先ほどコピーしたONLYOFFICE SPメタデータのリンクをフェデレーションメタデータアドレス(ホスト名またはURL)フィールドに貼り付け、次へボタンをクリックします。

-
表示名フィールドに任意の名前を指定し、次へボタンをクリックします。

-
この依存パーティ信頼の多要素認証設定を今は構成しないオプションを選択し、次へボタンをクリックします。

-
この信頼されたパーティにすべてのユーザーがアクセスできるようにするオプションを選択し、次へボタンをクリックします。

-
結果の設定を確認し、次へボタンをクリックします。

-
デフォルトのオプションを変更せずに、閉じるボタンをクリックします。

-
新しいウィンドウが開きます。発行変換ルールタブで、ルールの追加...ボタンをクリックします。

-
クレームルールテンプレートリストからLDAP属性をクレームとして送信オプションを選択し、次へボタンをクリックします。

-
クレームルール名フィールドに任意の名前を入力します。属性ストアリストからActive Directoryオプションを選択し、以下の表に従ってLDAP属性を送信クレームタイプにマッピングフォームを記入します。準備ができたら、完了をクリックします。
LDAP属性(選択または追加するには入力) 送信クレームタイプ(選択または追加するには入力) Given-Name givenName Surname sn E-Mail-Addresses mail Telephone-Number mobile Title title physicalDeliveryOfficeName l 
-
クレームルールの編集ウィンドウで、再度ルールの追加...ボタンをクリックし、クレームを変換オプションをクレームルールテンプレートリストから選択し、次へボタンをクリックします。

-
クレームルール名フィールドに任意の名前を入力し、リストから次のオプションを選択します。
- 受信クレームタイプ: mail,
- 送信クレームタイプ: Name ID,
- 送信名IDフォーマット: Email

準備ができたら、完了ボタンをクリックします。
ほぼ同じ結果が得られるはずです:

AD FSからのログアウトが機能しない場合、カスタムクレームルールを追加することをお勧めします。
{portal-domain}をSPドメインに置き換え、{ad-fs-domain}をIdPドメインに変更します:c:[Type == "mail"]=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/namequalifier"] = "http://{ad-fs-domain}/adfs/services/trust", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/spnamequalifier"] = "https://{portal-domain}/sso/metadata");
-
OKボタンをクリックします。
-
SSOをイントラネットから動作させるためには、グローバル認証ポリシーの編集(コンテキストメニューAD FS / 認証ポリシー)でフォーム認証オプションを有効にする必要があります。

-
作成した信頼されたパーティのプロパティを開き、詳細設定タブに切り替えます。

セキュアハッシュアルゴリズムリストでSHA-1オプションを選択します。

ONLYOFFICE SPとAD FS IdPの動作確認
SP側でのONLYOFFICEへのログイン
-
ONLYOFFICE認証ページにアクセスします(例:
https://myportal-address.com/auth.aspx)。 -
シングルサインオンボタンをクリックします(ONLYOFFICE SPの設定時に独自のテキストを指定した場合、キャプションが異なることがあります)。ボタンがない場合は、SSOが有効になっていないことを意味します。

-
SPとIdPのパラメータがすべて正しく設定されている場合、AD FS IdPのログインフォームにリダイレクトされます。

-
AD FS IdPアカウントのログインとパスワードを入力し、サインインボタンをクリックします。
-
認証情報が正しい場合、ポータルのメインページにリダイレクトされます。ユーザーが存在しない場合は自動的に作成され、IDPで変更された場合はデータが更新されます。
SSO認証で追加されたユーザーのプロファイル
SSO認証を使用して作成されたユーザープロファイルの編集は制限されています。IdPから受け取ったユーザープロファイルフィールド(名、姓、メール、役職、所在地)は編集できません。これらのフィールドはIdPアカウントからのみ編集可能です。
以下の図は、SSOユーザーのアクションメニューを示しています:

次の図は、編集用に開かれたSSOユーザープロファイルを示しています:

SSO認証を使用して作成されたユーザーは、ポータル管理者用のユーザーリストでSSOアイコンでマークされています:
