フェデレーション認証サービス
フェデレーション認証サービス(FAS)を使用して、Linux VDAにログオンするユーザーを認証することができます。Linux VDAは、FASログオン機能にWindows VDAと同じWindows環境を使用します。FAS用のWindows環境の構成については、「フェデレーション認証サービス」を参照してください。この記事では、Linux VDAに固有の追加情報を提供します。
注:
Linux VDAは、In-session Behaviorポリシーをサポートしていません。
Linux VDAは、短い接続を使用してFASサーバーとデータを送信します。
サポートされているディストリビューション
FASは、限定的なLinux ディストリビューションとドメイン参加方法をサポートします。次のマトリックスを参照してください:
Winbind | SSSD | Centrify | PBIS | |
---|---|---|---|---|
Amazon Linux 2 | はい | はい | はい | はい |
Debian 11.7/11.3 | はい | はい | はい | はい |
RHEL 9.2/9.0 | はい | はい | いいえ | いいえ |
RHEL 8.8/8.6 | はい | はい | はい | はい |
RHEL 7.9、CentOS 7.9 | はい | はい | はい | はい |
Rocky Linux 9.2/9.0 | はい | はい | いいえ | いいえ |
Rocky Linux 8.8/8.6 | はい | はい | いいえ | いいえ |
SUSE 15.5 | はい | はい | はい | いいえ |
Ubuntu 22.04/20.04 | はい | はい | はい | はい |
Linux VDAでのFASの構成
RHEL/Rocky Linux 8.x以降でのFASサポート
FASは、RHEL/Rocky Linux 8.x以降で廃止となったpam_krb5モジュールに依存します。マルチセッションOSモードで提供されるRHEL/Rocky Linux 8.x以降のマシンでFASを使用する場合は、次の手順が必要です。シングルセッションOS(VDI)モードで提供されるRHEL/Rocky Linux 8.x以降のマシンのFASの場合、次の手順はスキップしても構いません。
-
次のWebサイトからpam_krb5-2.4.8-6ソースコードをダウンロードします:
https://centos.pkgs.org/7/centos-x86_64/pam_krb5-2.4.8-6.el7.x86_64.rpm.html。
-
pam_krb5 moduleを構築してインストールします。
yum install make gcc krb5-devel pam-devel autoconf libtool rpm2cpio pam_krb5-2.4.8-6.el7.src.rpm | cpio -div tar xvzf pam_krb5-2.4.8.tar.gz cd pam_krb5-2.4.8 ./configure --prefix=/usr make make install <!--NeedCopy-->
-
/usr/lib64/security/にpam_krb5.soが作成されたことを確認します。
ls -l /usr/lib64/security | grep pam_krb5 <!--NeedCopy-->
証明書のインストール
ユーザーの証明書を検証するには、ルートCA証明書とすべての中間証明書をVDAにインストールします。たとえば、ルートCA証明書をインストールするには、前述の「Microsoft CAからのCA証明書の取得(ADで)」の手順でADルート証明書を取得するか、またはルートCAサーバー(http://CA-SERVER/certsrv
)から証明書をダウンロードします。
注:
次のコマンドは、中間証明書の構成にも適用されます。
たとえば、DERファイル(*.crt、*.cer、*.der)をPEMに変換するには、次のようなコマンドを実行します:
sudo openssl x509 -inform der -in root.cer -out root.pem
<!--NeedCopy-->
続いて、次のようなコマンドを実行して、ルートCA証明書をopenssl
ディレクトリにインストールします:
sudo cp root.pem /etc/pki/CA/certs/
<!--NeedCopy-->
注:
ルートCA証明書を/rootパス下に配置しないでください。配置すると、FASにはルートCA証明書への読み取り権限がなくなります。
ctxfascfg.shの実行
ctxfascfg.shスクリプトを実行してFASを構成します:
sudo /opt/Citrix/VDA/sbin/ctxfascfg.sh
<!--NeedCopy-->
ctxfascfg.sh
をサイレントモードで実行できます。スクリプトをサイレントモードで実行する前に、次の環境変数を設定します:
-
CTX_FAS_ADINTEGRATIONWAY=winbind | sssd | centrify | pbis:Active Directoryの統合方式を指定。
CTX_EASYINSTALL_ADINTEGRATIONWAY
が指定されている場合、CTX_EASYINSTALL_ADINTEGRATIONWAY
と同じ値です。CTX_EASYINSTALL_ADINTEGRATIONWAY
が指定されていない場合、CTX_FAS_ADINTEGRATIONWAY
は独自の値を使用します。 -
CTX_FAS_CERT_PATH =<certificate path>:ルート証明書とすべての中間証明書を格納するフルパスを指定します。ここで、「certificate path」は証明書のパスです。
-
CTX_FAS_KDC_HOSTNAME:PBISを選択するときに、キー配布センター(KDC)のホスト名を指定します。
-
CTX_FAS_PKINIT_KDC_HOSTNAME:PKINIT KDCホスト名を指定します。特に指定しない限りCTX_FAS_KDC_HOSTNAMEと同じです。複数のDelivery Controllerがある場合は、ドメインのすべてのKDCのホスト名を/etc/krb5.confファイルのpkinit_kdc_hostnameに追加します。詳しくは、Knowledge CenterのCTX322129を参照してください。
-
CTX_FAS_SERVER_LIST=’list-fas-servers’ – フェデレーション認証サービス(FAS)サーバーは、ADグループポリシーにより構成されます。ドメインGPOでのFASポリシー設定について詳しくは、「グループポリシーの構成」を参照してください。Linux VDAはADグループポリシーをサポートしていません。代わりに、セミコロンで区切られたFASサーバーの一覧を使用できます。シーケンスは、ADグループポリシーで設定したものと同じである必要があります。いずれかのサーバーアドレスが削除されている場合は、その空白を ’<none>‘ という文字列で埋めて、サーバーアドレスの順番は変更しません。FASサーバーと適切に通信するには、FASサーバーで指定されているポート番号と一致するポート番号を追加してください。例:「CTX_XDL_FAS_LIST=’fas_server_1_url:port_number; fas_server_2_url: port_number; fas_server_3_url: port_number’」。
既存のLinux VDAインストールをアップグレードするには、次のコマンドを実行してFASサーバーを設定し、
ctxvda
サービスを再起動して設定を有効にすることができます。sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -t "REG_SZ" -v "Addresses" -d "<Your-FAS-Server-List>" --force systemctl restart ctxjproxy systemctl restart ctxvda <!--NeedCopy-->
ctxreg
を使用してFASサーバーを更新するには、次のコマンドを実行します:sudo /opt/Citrix/VDA/bin/ctxreg update -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -v "Addresses" -d "<Your-FAS-Server-List>" systemctl restart ctxjproxy systemctl restart ctxvda <!--NeedCopy-->
正しいActive Directory統合方法を選択し、証明書の正しいパスを入力します(例:/etc/pki/CA/certs/
)。
次に、このスクリプトはkrb5-pkinitパッケージとpam_krb5パッケージをインストールし、関連する構成ファイルを設定します。
FASの無効化
Linux VDAでFASを無効にするには、次のコマンドを使用してConfDBからすべてのFASサーバーを削除します:
sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -t "REG_SZ" -v "Addresses" -d "" --force
systemctl restart ctxjproxy
systemctl restart ctxvda
<!--NeedCopy-->
制限事項
- 現在、FASはロック画面をサポートしていません。セッションでロックボタンをクリックすると、FASを使用してセッションに再度ログオンすることはできません。
- このリリースでは、「フェデレーション認証サービスのアーキテクチャの概要」の記事で説明している一般的なFAS環境のみがサポートされており、Windows 10 Azure AD Joinは含まれません。
トラブルシューティング
FASのトラブルシューティングを行う前に、次のことを確認してください:
- Linux VDAが正しくインストールされ、構成されています。
- FAS以外のセッションは、パスワード認証を使用して共通ストアで正常に起動できます。
FAS以外のセッションが適切に機能している場合は、LoginクラスのHDXログレベルをVERBOSEに設定し、VDAログレベルをTRACEに設定します。Linux VDAのトレースログを有効にする方法については、Knowledge CenterのCTX220130の記事を参照してください。
Linux XDPingツールを使用してLinux VDA環境に一般的な構成の問題がないか確認することもできます。
FASサーバー構成エラー
FASストアからセッションを起動すると失敗します。
/var/log/xdl/hdx.logを確認し、次のようなエラーログを探します:
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_user: [Logon Type] Federated Authentication Logon.
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_fas: entry
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: connect_fas: start connect to server 0
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: connect_fas0: failed to connect: Connection refused.
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_fas: failed to connect to server [0], please confirm if fas service list is well configurated in condb
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_fas: exit, 43
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_user: failed to validate fas credential
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: LoginBoxValidate: failed validation of user 'user1@CTXDEV.LOCAL', INVALID_PARAMETER
<!--NeedCopy-->
解決策
次のコマンドを実行して、Citrixレジストリ値「HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService」が<Your-FAS-Server-List>に設定されていることを確認します。
sudo /opt/Citrix/VDA/bin/ctxreg dump | grep "UserCredentialService"
<!--NeedCopy-->
既存の設定が間違っている場合は、前述の「FASサーバーの設定」の手順に従って再設定します。
間違ったCA証明書の構成
FASストアからセッションを起動すると失敗します。灰色のウィンドウが表示され、数秒後に消えます。
/var/log/xdl/hdx.logを確認し、次のようなエラーログを探します:
2021-01-28 01:47:46.210 <P30656:S5> citrix-ctxlogin: get_logon_certificate: entry
2021-01-28 01:47:46.210 <P30656:S5> citrix-ctxlogin: check_caller: current process: pid [30656], name [/opt/Citrix/VDA/bin/ctxlogin]
2021-01-28 01:47:46.210 <P30656:S5> citrix-ctxlogin: get_public_certificate: entry
2021-01-28 01:47:46.211 <P30656:S5> citrix-ctxlogin: query_fas: waiting for response...
2021-01-28 01:47:46.270 <P30656:S5> citrix-ctxlogin: query_fas: query to server success
2021-01-28 01:47:46.270 <P30656:S5> citrix-ctxlogin: get_public_certificate: exit
2021-01-28 01:47:46.270 <P30656:S5> citrix-ctxlogin: fas_base64_decode: input size 1888
2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: fas_base64_decode: output size 1415
2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: get_logon_certificate: get logon certificate success
2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: cache_certificate: cache certificate success
2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: get_logon_certificate: exit, 0
2021-01-28 01:47:48.060 <P30656:S5> citrix-ctxlogin: validate_user: pam_authenticate err,can retry for user user1@CTXDEV.LOCAL
<!--NeedCopy-->
解決策
/etc/krb5.conf
にルートCA証明書とすべての中間証明書を格納するフルパスが正しく設定されていることを確認します。フルパスは次のようになります:
[realms]
EXAMPLE.COM = {
......
pkinit_anchors = DIR:/etc/pki/CA/certs/
......
}
<!--NeedCopy-->
既存の設定が間違っている場合は、前述の「証明書のインストール」の手順に従って再設定します。
または、ルートCA証明書が有効かどうかを確認します。
シャドウアカウントマッピングエラー
FASはSAML認証により構成されます。ADFSユーザーがADFSログオンページでユーザー名とパスワードを入力すると、次のエラーが発生することがあります。
このエラーは、ADFSユーザーが正常に確認されたが、ADにシャドウユーザーが構成されていないことを示しています。
解決策
ADにシャドウアカウントを設定します。
ADFSが構成されていない
FASストアへのログオン中に次のエラーが発生します:
この問題は、ADFSが展開されていない状態で、FASストアがSAML認証を使用するよう構成した場合に発生します。
解決策
フェデレーション認証サービス用のADFS IdPの展開詳しくは、「フェデレーション認証サービスのADFSの展開」を参照してください。
関連情報
- 一般的なFAS環境については、「フェデレーション認証サービスのアーキテクチャの概要」を参照してください。
- フェデレーション認証サービスの「詳細な構成」では「方法」の記事を紹介しています。
既知の問題
FASが使用されている場合、英語以外の文字を使用して公開デスクトップまたはアプリセッションを開始しようとすると、失敗することがあります。
回避方法
CAツールの [テンプレートの管理] を右クリックし、[Citrix_SmartcardLogon] テンプレート上で [Active Directoryの情報から構築する] を [要求に含まれる] に変更します: