フェデレーション認証サービス
概要
Citrix Federated Authentication Service (FAS) は、Active Directory証明書サービスと統合するように設計された特権コンポーネントです。これはユーザーに動的に証明書を発行し、スマートカードを持っているかのようにActive Directory環境にログオンできるようにします。この機能により、StoreFront™はSecurity Assertion Markup Language (SAML) アサーションなど、より広範な認証オプションを使用できます。SAMLは、インターネット上で従来のWindowsユーザーアカウントの代替として一般的に使用されています。
注:
SAML認証を使用するには、VDAでFASを適切に構成してください。
CU3以降、Linux VDAはFASサーバーとのデータ送信にショート接続を使用します。
次の図は、Microsoft証明機関と統合され、StoreFrontおよびVDAにサポートサービスを提供するFASを示しています。
-

-
ユーザーがCitrix環境へのアクセスを要求すると、信頼されたStoreFrontサーバーはFASに接続します。FASは、単一のCitrix Virtual AppsまたはCitrix Virtual Desktops™セッションがそのセッションの証明書で認証することを許可するチケットを付与します。VDAがユーザーを認証する必要がある場合、FASに接続してチケットを引き換えます。FASのみがユーザー証明書の秘密キーにアクセスできます。VDAは、証明書を使用して実行する必要がある署名および復号化の各操作をFASに送信する必要があります。
-
要件
-
FASはWindows Server 2008 R2以降でサポートされています。
- FASは、他のCitrixコンポーネントを含まないサーバーにインストールすることをお勧めします。
- Windows Serverは、登録機関証明書と秘密キーにアクセスしてドメインユーザーに証明書を自動的に発行し、それらのユーザー証明書と秘密キーにアクセスできるように保護されている必要があります。
Citrix Virtual Apps™またはCitrix Virtual Desktopsサイトの場合:
- Delivery Controllerは最小バージョン7.9である必要があります。
- StoreFrontサーバーは最小バージョン3.6である必要があります(XenAppおよびXenDesktop 7.9 ISOに付属のバージョン)。
- Linux VDAは最小バージョン7.18である必要があります。通常の方法でマシンカタログを作成する前に、フェデレーション認証サービスグループポリシー構成がVDAに正しく適用されていることを確認してください。詳細については、この記事の「グループポリシーの構成」セクションを参照してください。
参照:
- Active Directory証明書サービス https://social.technet.microsoft.com/wiki/contents/articles/1137.active-directory-certificate-services-ad-cs-introduction.aspx
- 証明書ログオンのためのWindowsの構成 http://support.citrix.com/article/CTX206156
- フェデレーション認証サービスのインストール フェデレーション認証サービス
証明書ログオンのためのWindowsの構成
証明書ログオンのためにWindowsを構成する方法については、Knowledge Centerの記事CTX206156を開き、Smart_card_config_Citrix_Env.pdfファイル(以下「PDFファイル」)をダウンロードして読んでください。PDFファイルに従って以下の手順を実行し、各手順で示されている相違点または補足事項に注意してください。操作対象のマシン(例:AD、Delivery Controller、StoreFront)に特に注意してください。
Windowsドメインのセットアップ(AD上)
ドメインコントローラーの役割のインストール
PDFファイルの「ドメインコントローラーの役割のインストール」セクションを参照してください。
Active Directory証明書サービスのインストール中に、次のオプションが選択されていることを確認してください:



http://localhost/certsrv/を開き、次のウェルカムページが表示されるか確認してください。表示される場合、Active Directory証明書サービスは正常にインストールされています。

スマートカード使用のための証明機関の準備
補足はありません。PDFファイルの「スマートカード使用のための証明機関の準備」セクションを参照してください。
ドメインコントローラー証明書の発行
補足はありません。PDFファイルの「ドメインコントローラー証明書の発行」セクションを参照してください。
HTTPSのためのMicrosoft IISの構成(StoreFront上)
Microsoft IISでのHTTPSの構成
補足はありません。PDFファイルの「Microsoft IISでのHTTPSの構成」セクションを参照してください。
ドメインに参加していないコンピューター
PDFファイルの「ドメインに参加していないコンピューター」セクションを参照してください。
Microsoft CAからのCA証明書の取得(AD上)
補足はありません。PDFファイルの「Microsoft CAからのCA証明書の取得」セクションを参照してください。
Windowsへの信頼されたCA証明書のインストール
補足はありません。PDFファイルの「Windowsへの信頼されたCA証明書のインストール」セクションを参照してください。
Citrix StoreFrontの構成(StoreFront上)
ストアの作成
PDFファイルの「ストアの作成」セクションを参照してください。
上記のIIS構成後、共通ストアのベースURLはhttp://ではなくhttps://に強制的に設定されます。FASはスマートカードとストアを共有しないため、FASには新しいストアが必要です。Linux VDA FASは、任意のStoreFront認証方法と互換性があります。たとえば、FASストアはパスワードまたはSAMLを使用するように構成できますが、両方を同時に使用することはできません。SAMLが選択されている場合、StoreFrontのURLは自動的にIdPにリダイレクトされ、パスワード認証方法は無視されます。



Internet Explorerを起動し、FASストアのURL(例:https://mzgwy-ddc.xd.local/Citrix/FASWeb)を開きます。
注:FASストアのURLにはWebが付加されている必要があります。
FASのインストールとセットアップ
インストールとセットアップのプロセスは、次の手順で構成されます。
- フェデレーション認証サービスのインストール
- StoreFrontサーバーでのフェデレーション認証サービスプラグインの有効化
- グループポリシーの構成
- フェデレーション認証サービス管理コンソールを使用して、以下を実行します。(a) 提供されたテンプレートの展開、(b) 証明機関のセットアップ、(c) フェデレーション認証サービスが証明機関を使用することを承認
- ユーザー規則の構成
各手順の詳細については、「フェデレーション認証サービス」を参照してください。各手順における以下の相違点または補足事項に注意してください。操作対象のマシン(例:AD、Delivery Controller、StoreFront、FASサーバー)に特に注意してください。
フェデレーション認証サービスのインストール (FASサーバー上)
セキュリティのため、FASはドメインコントローラーまたは証明機関と同様の方法で保護された専用サーバーにインストールしてください。
StoreFrontストアでのフェデレーション認証サービスプラグインの有効化 (StoreFront上)
以下のコマンドで、StoreFrontの構成時に入力したFASストア名と同じ名前が使用されていることを確認してください。たとえば、この例ではFASがストア名です。
$StoreVirtualPath = "/Citrix/**FAS**"
Delivery Controller™の構成 (Delivery Controller上)
フェデレーション認証サービスを使用するには、Delivery Controllerが接続できるStoreFrontサーバーを信頼するように構成します。Set-BrokerSite -TrustRequestsSentToTheXmlServicePort $true PowerShellコマンドレットを実行します。場合によっては、最初にAdd-PSSnapin citrix.*を実行する必要があります。
グループポリシーの構成 (FASサーバーおよびAD上)
このセクションの手順1~7を実行するには、管理者である必要があります。手順1はFASサーバーで実行し、手順2~7はADで実行する必要があります。
手順1~7を完了したら、FASサーバーのレジストリエディターでFASポリシーが設定されていることを確認します。

インセッション証明書サポートの有効化
- Linux VDAはインセッション証明書をサポートしていません。
フェデレーション認証サービス管理コンソールの使用 (FASサーバー上)
- 補足事項はありません。「フェデレーション認証サービス」の記事を参照してください。
証明書テンプレートの展開 (FASサーバー上)
補足事項はありません。「フェデレーション認証サービス」の記事を参照してください。
Active Directory証明書サービスのセットアップ (FASサーバー上)
- 補足事項はありません。「フェデレーション認証サービス」の記事を参照してください。
フェデレーション認証サービスの承認 (FASサーバー上)
補足事項はありません。「フェデレーション認証サービス」の記事を参照してください。
ユーザー規則の構成 (FASサーバー上)
補足事項はありません。「フェデレーション認証サービス」の記事を参照してください。
詳細については、「フェデレーション認証サービス」の記事の「セキュリティに関する考慮事項」セクションにある「委任された登録エージェント」および「アクセス制御リストの構成」も参照してください。
フェデレーション認証サービスADFS展開
フェデレーション認証サービス用のADFS IdPの展開方法については、「フェデレーション認証サービスADFS展開」を参照してください。
Linux VDAの構成
FASサーバーの設定
新規のLinux VDAインストールの場合、FASを使用するには、ctxinstall.shまたはctxsetup.shの実行中にCTX_XDL_FAS_LISTを求められたときに、各FASサーバーのFQDNを入力します。Linux VDAはADグループポリシーをサポートしていないため、代わりにセミコロン区切りのFASサーバーのリストを指定できます。サーバーアドレスが削除された場合は、その空白を<none>というテキスト文字列で埋め、サーバーアドレスのシーケンスを変更せずに維持してください。
既存のLinux VDAインストールをアップグレードする場合は、ctxsetup.shを再実行してFASサーバーを設定できます。または、以下のコマンドを実行して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
service ctxvda restart
<!--NeedCopy-->
ctxregを介してFASサーバーを更新するには、以下のコマンドを実行します。
sudo /opt/Citrix/VDA/bin/ctxreg update -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -v "Addresses" -d "<Your-FAS-Server-List>"
service ctxvda restart
<!--NeedCopy-->
ルートCA証明書のインストール
ユーザーの証明書を検証するために、VDAにルートCA証明書をインストールします。前述の「Microsoft CAからCA証明書を取得する (AD上)」の手順からADルート証明書を取得するか、ルートCAサーバーhttp://CA-SERVER/certsrvからDER形式でダウンロードします。
注:
以下のコマンドは、中間証明書の構成にも適用されます。
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証明書への読み取り権限を持ちません。
FASの構成
FASを構成するには、以下のスクリプトを実行します。
sudo /opt/Citrix/VDA/sbin/ctxfascfg.sh
<!--NeedCopy-->
注:
上記のスクリプトは、単一のルートCA証明書を持つシナリオのみを処理します。
環境に中間証明書がある場合は、次のように中間パスを/etc/krb5.confに追加します。
[realms] EXAMPLE.COM = { … pkinit_anchors = FILE:/etc/pki/CA/certs/root.pem pkinit_pool = FILE:/etc/pki/CA/certs/intermediate.pem … }
ctxfascfg.shをサイレントモードで実行できるように、2つの環境変数が追加されます。
-
**CTX_FAS_ADINTEGRATIONWAY=winbind sssd centrify** – Active Directory統合方法を示します。これは、 CTX_EASYINSTALL_ADINTEGRATIONWAYが指定されている場合、CTX_EASYINSTALL_ADINTEGRATIONWAYと同じになります。CTX_EASYINSTALL_ADINTEGRATIONWAYが指定されていない場合、CTX_FAS_ADINTEGRATIONWAYは独自の値を設定します - CTX_FAS_ROOT_CA_PATH=<root_CA_certificate> – ルートCA証明書のフルパスを指定します。
正しいActive Directory統合方法を選択し、ルートCA証明書の正しいパス (例: /etc/pki/CA/certs/root.pem) を入力します。
スクリプトはkrb5-pkinitおよびpam_krb5パッケージをインストールし、関連する構成ファイルを設定します。
制限事項
-
FASは限られたプラットフォームとAD統合方法をサポートしています。以下のマトリックスを参照してください。
Winbind SSSD Centrify RHEL 7.7 /CentOS 7.7 √ √ √ Ubuntu 18.04 √ × √ Ubuntu 16.04 √ × √ SLES 12.3 √ × √ - FASはまだロック画面をサポートしていません。セッションでロックボタンをクリックすると、FASを使用してセッションに再度ログオンすることはできません。
- このリリースは、Federated Authentication Serviceのアーキテクチャの概要の記事にまとめられている一般的なFAS展開のみをサポートしており、Windows 10 Azure AD Joinは含まれていません。
トラブルシューティング
FASのトラブルシューティングを行う前に、Linux VDAが正しくインストールおよび構成されており、パスワード認証を使用して共通ストアで非FASセッションを正常に起動できることを確認してください。
非FASセッションが正常に機能する場合は、LoginクラスのHDXログレベルをVERBOSEに、VDAログレベルをTRACEに設定します。Linux VDAのトレースログを有効にする方法については、Knowledge Centerの記事CTX220130を参照してください。
FASサーバー構成エラー
FASストアからのセッション起動に失敗します。たとえば、次のスクリーンショットを参照してください。

/var/log/xdl/hdx.logを確認し、次のようなエラーログを見つけてください。
2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: query2fas: failed to retrieve data: No such file or directory.
2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: sayhello2fas_internal: Failed to query.
2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: sayhello2fas_convertcredential: exit.
2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: LoginFasValidate: Failed to start FAS.
2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: receive_data: LoginFASValidate - parameters check error.
2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: receive_data: Exit FAILURE
2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: main: EXITING login process..., FAILURE
<!--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を確認し、次のようなエラーログを見つけてください。
2018-03-27 10:15:52.227 <P9099:S3> citrix-ctxlogin: validate_user: pam_authenticate err,can retry for user user1@CTXFAS.LAB
2018-03-27 10:15:52.228 <P9099:S3> citrix-ctxlogin: logout_user: closing session and pam transaction
2018-03-27 10:15:52.228 <P9099:S3> citrix-ctxlogin: validate_user: Exit (user=user1@CTXFAS.LAB)=INVALID_PASSWORD
2018-03-27 10:15:52.228 <P9099:S3> citrix-ctxlogin: LoginBoxValidate: failed validation of user 'user1@CTXFAS.LAB', INVALID_PASSWORD
2018-03-27 10:15:52.228 <P9099:S3> citrix-ctxlogin: Audit_login_failure: Not yet implemented
<!--NeedCopy-->
解決策
/etc/krb5.confでルートCA証明書のフルパスが正しく設定されていることを確認してください。フルパスは次のようになります。
[realms]
EXAMPLE.COM = {
......
pkinit_anchors = FILE:/etc/pki/CA/certs/root.pem
......
}
<!--NeedCopy-->
既存の設定が正しくない場合は、前述のルートCA証明書のインストールの手順に従って再度設定してください。
または、ルートCA証明書が有効であるかを確認してください。
シャドウアカウントマッピングエラー
FASはSAML認証によって構成されています。ADFSユーザーがADFSログオンページでユーザー名とパスワードを入力した後、次のエラーが発生する可能性があります。

このエラーは、ADFSユーザーが正常に検証されたものの、ADにシャドウユーザーが構成されていないことを示しています。
解決策
ADでシャドウアカウントを設定します。
ADFSが構成されていない
FASストアへのログオン試行中に次のエラーが発生します。

原因は、FASストアがSAML認証を使用するように構成されている一方で、ADFS展開が不足していることです。
解決策
Federated Authentication Service用にADFS IdPを展開します。詳細については、Federated Authentication Service ADFS展開を参照してください。
関連情報
- 一般的なFAS展開は、Federated Authentication Serviceのアーキテクチャの概要の記事にまとめられています。
- 「ハウツー」記事は、Federated Authentication Serviceの高度な構成の章で紹介されています。
既知の問題
FASを使用している場合、非英語文字を含む公開デスクトップまたはアプリセッションを起動しようとすると失敗する可能性があります。

回避策
CAツールでManage Templatesを右クリックし、Citrix_SmartcardLogonテンプレートをBuild from this Active Directory informationからSupply in the requestに変更します。
