ファームに関する補足

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

トピック:

背景

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

ADFSがサーバーファームで使用されると、構成ファイルはファームメンバーサーバー間で複製されます。最終的な構成ファイルには、インストールが実行された最後のサーバーでのみ復号できる単一のクライアントシークレットが含まれるようになります。

ADFSサーバーファームがWindows Internal Database(WID)を使用している場合は、インストール時に各サーバーをプライマリサーバーに昇格させる必要があります。Oktaでは、現在のプライマリサーバーでインストールを開始することを推奨しています。以下の手順をプライマリサーバーで開始して完了します。インストールプロセスは元のプライマリサーバーにアダプタをインストールする処理で完了するため、そのプライマリ状態に戻ります。PowerShellコマンドGet-AdfsFarmInformationを使用して、現在のプライマリサーバーを特定できます。

プロセスの概要

  1. WIDベースのADFSファーム内のサーバーにインストールする場合、現在のプライマリサーバーを特定し、そのサーバーからシーケンスを開始します。
  2. ADFSプラグインをインストールします。「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つの保護された文字列と、最初の(そして現在のプライマリ)サーバーからの1つのファイルの完全な構成ファイルを示しています。

    6. 保護された文字列のリストをJSON配列に配置します。

    7. 完全な構成ファイルのclientSecret文字列の値を、保護された文字列のJSON配列に置き換えます。

      注:インデントと改行の書式設定は省略可能です。
    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"