ファーム・インストールに関する補足
フェデレーション・サーバー・ファーム環境では、管理者はこれらの追加のインストール手順に従ってアダプターを正常にインストールする必要があります。
トピック:
背景
インストーラーはクライアント・シークレットを保護された文字列として保存します。この保護された文字列は、マシン固有のキーを使用して生成されます。
ADFSがサーバー・ファームでセットアップされると、構成ファイルはファーム・メンバー・サーバー間で複製されます。その結果、最終的な構成ファイルには、1台のサーバー(インストールが完了した最後のサーバー)でのみ復号できる単一のクライアント・シークレットが含まれるようになります。

注
ADFSサーバー・ファームがSQLデータベースではなくWIDデータベースを使用している場合、インストール時に各サーバーをプライマリ・サーバーに昇格させる必要があります。現在のプライマリ・サーバーでインストールを開始することをおすすめします。プライマリ・サーバーから開始し、以下で説明するシーケンスに従うと、元のプライマリ・サーバーでインストールが完了し、プライマリ・サーバーに戻ります。powershellコマンドGet-AdfsFarmInformationを使用して、現在のプライマリ・サーバーを特定してください。
プロセスの概要
- WIDベースのADFSファーム内のサーバーにインストールすることで現在のプライマリ・サーバーを特定できた場合、そこからシーケンスを開始します。
- 「ADFSサーバーにOkta ADFSプラグインをインストールする」の説明に沿ってインストールを実行します。
- 保護された文字列の値を各サーバーから取得してコピーします。
- 変更された構成ファイルの値を結合します。
- 構成ファイルを最後のサーバーで変更されたバージョンで置き換えます。
- ADFS認証プロバイダーを手動で再登録します。
詳細な手順
- ローカル・データベース・ファーム(WID)を使用していて、現在のコンピューターがファーム内のプライマリ・サーバーでない場合、サーバーで次のコマンドを実行してプライマリ・サーバーに昇格させます。
Set-AdfsSyncProperties -Role PrimaryComputer
- 最初のサーバーで上記のとおりインストールを実行します。
- okta_adfs_adapter.jsonファイル(%ProgramFiles%\Okta\Okta MFA Provider\config)をメモ帳などのテキスト・エディターで開きます。
- クライアント・シークレット値をコピーします(切り取ったシークレットを表示しています)。
- 値を別のファイルに貼り付けます。
- 環境内の残りのサーバーで手順2を繰り返します。
- ファーム内のすべてのサーバーで前の手順を完了したら、手順4に進みます。
- 変更済み構成ファイルの値を結合します。
- 元のプライマリ・サーバーから始めます。
- サーバーがプライマリに戻るよう昇格させます。
Set-AdfsSyncProperties -Role PrimaryComputer
- okta_adfs_adapter.jsonファイルを開きます。
UACがオンの場合、エディターが管理者として実行されていることを確認します。
他のサーバーからの保護されたシークレットを含む別のファイルのコンテンツ全体をコピーして貼り付けます。
以下は、サーバーからの4つの保護された文字列と、最初の(そして現在のプライマリ)サーバーからの完全な構成ファイルです。
保護された文字列のリストをjson配列に配置します(配列の最後の要素がカンマで終わっていないことに注意してください)。
完全な構成ファイルのclientSecretの文字列値を、作成した配列で置き換えます。
注:インデントと改行の書式設定は省略可能です。
オプション:JSONLintツールを使用してjsonが整形式であることを検証します。オンライン・バージョンが利用可能ですので、ご自身の判断で使用してください。例: https://jsonlint.com/。
- 最後のサーバー上で構成ファイルを変更したバージョンで置き換えます。
- 最後のサーバーのokta_adfs_adapter.jsonファイルを新しく作成した構成ファイルで置き換えます。
- 注:メモ帳を管理者として実行する必要がある場合があります
- Adfs認証プロバイダーを手動で再登録します。
- スクリプト例:
$a=[System.Reflection.Assembly]::LoadFile("C:\Program Files\Okta\Okta MFA Provider\bin\OktaMfaAdfs.dll")
$file=[String]::Format("OktaMfaAdfs.AuthenticationAdapter, {0}", $a.GetName().FullName)
Unregister-AdfsAuthenticationProvider -Name "OktaMfaAdfs"
Register-AdfsAuthenticationProvider -Name "OktaMfaAdfs" -TypeName $file -ConfigurationFilePath "C:\Program Files\Okta\Okta MFA Provider\config\okta_adfs_adapter.json"
- スクリプト例: