ファームインストールに関する補足

フェデレーションサーバーファーム環境では、管理者はこれらの追加のインストール手順に従ってアダプターを正常にインストールする必要があります。

トピック:

背景

インストーラーはクライアントシークレットを保護された文字列として保存します。この保護された文字列は、マシン固有のキーを使用して生成されます。

ADFSがサーバーファームでセットアップされると、構成ファイルはファームメンバーサーバー間で複製されます。その結果、最終的な構成ファイルには、1台のサーバー(インストールが完了した最後のサーバー)でのみ復号できる単一のクライアントシークレットが含まれるようになります。

ADFSサーバーファームがSQLデータベースではなくWIDデータベースを使用している場合、インストール時に各サーバーをプライマリサーバーに昇格させる必要があります。現在のプライマリサーバーでインストールを開始することをおすすめします。プライマリサーバーから開始し、以下で説明するシーケンスに従うと、元のプライマリサーバーでインストールが完了し、プライマリサーバーに戻ります。powershellコマンドGet-AdfsFarmInformationを使用して、現在のプライマリサーバーを特定してください。

プロセスの概要

  1. WIDベースのADFSファーム内のサーバーにインストールすることで現在のプライマリサーバーを特定できた場合、そこからシーケンスを開始します。
  2. ADFSサーバーにOkta ADFSプラグインをインストールする」の説明に従ってインストールを実行します。
  3. 保護された文字列の値を各サーバーから取得してコピーします。
  4. 変更された構成ファイルの値を結合します。
  5. 構成ファイルを最後のサーバーで変更されたバージョンで置き換えます。
  6. ADFS認証プロバイダーを手動で再登録します。

詳細な手順

  1. ローカルデータベースファーム(WID)を使用していて、現在のコンピューターがファーム内のプライマリサーバーでない場合、サーバーで次のコマンドを実行してプライマリサーバーに昇格させます。

    Set-AdfsSyncProperties -Role PrimaryComputer

  2. 最初のサーバーで上記のとおりインストールを実行します。
  3. okta_adfs_adapter.jsonファイル(%ProgramFiles%\Okta\Okta MFA Provider\config)をメモ帳などのテキストエディターで開きます。

    1. クライアントシークレット値をコピーします(切り取ったシークレットを表示しています)。
    2. 値を別のファイルに貼り付けます。
    3. 環境内の残りのサーバーで手順2を繰り返します。
    4. ファーム内のすべてのサーバーで前の手順を完了したら、手順4に進みます。
  4. 変更済み構成ファイルの値を結合します。
    1. 元のプライマリサーバーから始めます。
    2. サーバーがプライマリに戻るよう昇格させます。

      Set-AdfsSyncProperties -Role PrimaryComputer

    3. okta_adfs_adapter.jsonファイルを開きます。

      UACがオンの場合、エディターが管理者として実行されていることを確認します。

    4. 他のサーバーからの保護されたシークレットを含む別のファイルのコンテンツ全体をコピーして貼り付けます。

    5. 以下は、サーバーからの4つの保護された文字列と、最初の(そして現在のプライマリ)サーバーからの完全な構成ファイルです。

    6. 保護された文字列のリストをjson配列に配置します(配列の最後の要素がカンマで終わっていないことに注意してください)。

    7. 完全な構成ファイルのclientSecretの文字列値を、作成した配列で置き換えます。

      注:インデントと改行の書式設定は省略可能です。
    8. 任意:JSONLintツールを使用してjsonが整形式であることを検証します。オンラインバージョンが利用可能ですので、ご自身の判断で使用してください。例:https://jsonlint.com/
  5. 最後のサーバー上で構成ファイルを変更したバージョンで置き換えます。
    • 最後のサーバーのokta_adfs_adapter.jsonファイルを新しく作成した構成ファイルで置き換えます。
    • 注:メモ帳を管理者として実行する必要がある場合があります
  6. 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"