フェデレーション認証サービス
概要
Citrixフェデレーション認証サービス(Federated Authentication Service:FAS)は、Active Directory証明書サービスと統合するように設計されている、権限が付与されたコンポーネントです。Citrix Federated Authentication Serviceではユーザー向けの証明書が動的に発行され、ユーザーはスマートカードを持っている場合と同じようにActive Directory環境にログオンできます。この機能により、セキュリティアサーションマークアップランゲージ(Security Assertion Markup Language:SAML)アサーションなどの広範な認証オプションをStoreFrontで使用できます。SAMLは、インターネット上で従来のWindowsユーザーアカウントに代わるものとして一般的に使用されています。
注:
SAML認証を使用するには、VDAでFASを適切に構成します。
CU3以降、Linux VDAは短い接続を使用してFASサーバーとデータを送信します。
以下の図に、Microsoft証明機関と統合されたFASによる、StoreFrontとVDAへのサポートサービスの提供について示します。
ユーザーがCitrix環境へのアクセスを要求すると、信頼済みのStoreFrontサーバーがFASにアクセスします。FASは、単一のCitrix Virtual AppsまたはCitrix Virtual Desktopsセッションがそのセッションの証明書で認証できるようにするチケットを付与します。VDAでユーザーを認証する必要がある場合、VDAはFASにアクセスしてチケットを使用します。FASのみがユーザー証明書の秘密キーにアクセスできます。VDAは、証明書を使用して実行する必要のあるすべての署名処理および暗号化解除処理を、FASに送信する必要があります。
要件
FASは、Windows Server 2008 R2以降でサポートされています。
- FASは、ほかのCitrixコンポーネントを含まないサーバーにインストールすることをお勧めします。
- Windowsサーバーは、ドメインユーザーに対して自動的に証明書を発行するために登録機関の証明書および秘密キーにセキュアにアクセスする必要があります。また、これらのユーザー証明書および秘密キーにセキュアにアクセスする必要があります。
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/
を開いて、次のようなWelcomeページが表示されているかどうかを確認します。表示されている場合は、Active Directory証明書サービスは正常にインストールされています。
スマートカードを使用するための認証機関の準備
補足なし。PDFファイルの「スマートカードを使用するための認証機関の準備」セクションを参照してください。
ドメインコントローラー証明書の発行
補足なし。PDFファイルの「ドメインコントローラー証明書の発行」セクションを参照してください。
HTTPS用のMicrosoft IISの構成(StoreFrontで)
Microsoft IISでのHTTPSの構成
補足なし。PDFファイルの「Microsoft IISでのHTTPSの構成」セクションを参照してください。
ドメインに参加していないコンピューター
PDFファイルの「ドメインに参加していないコンピューター」セクションを参照してください。
Microsoft CAからのCA証明書の取得(ADで)
補足なし。PDFファイルの「Microsoft CAからのCA証明書の取得」セクションを参照してください。
信頼できるCA証明書のWindowsへのインストール
補足なし。PDFファイルの「信頼できるCA証明書のWindowsへのインストール」セクションを参照してください。
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で)
フェデレーション認証サービスを使用するには、それに接続可能なStoreFrontサーバーを信頼するようにDelivery Controllerを構成します。PowerShellコマンドレットSet-BrokerSite -TrustRequestsSentToTheXmlServicePort $trueを実行します。場合によっては、最初に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サーバーの完全修飾ドメイン名を入力します。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証明書のインストール
ユーザーの証明書を検証するには、ルートCA証明書をVDAにインストールします。前述の「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証明書のフルパスを指定。ここで、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を使用してセッションに再度ログオンすることはできません。
- このリリースでは、「フェデレーション認証サービスのアーキテクチャの概要」の記事で説明している一般的なFAS環境のみがサポートされており、Windows 10 Azure AD Joinは含まれません。
トラブルシューティング
パスワード認証を使用してFAS以外のセッションを共通ストアで正常に起動できるよう、FASのトラブルシューティングを行う前に、Linux VDAが正しくインストールされ、構成されていることを確認してください。
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ストアへのログオン中に次のエラーが発生します:
ADFSが展開されていない状態で、FASストアがSAML認証を使用するように構成されていることが原因です。
解決策
フェデレーション認証サービス用のADFS IdPの展開詳しくは、「フェデレーション認証サービスのADFSの展開」を参照してください。
関連情報
- 一般的なFAS環境については、「フェデレーション認証サービスのアーキテクチャの概要」を参照してください。
- フェデレーション認証サービスの「詳細な構成」では「方法」の記事を紹介しています。
既知の問題
FASが使用されている場合、英語以外の文字を使用して公開デスクトップまたはアプリセッションを開始しようとすると、失敗することがあります。
回避方法
CAツールの [テンプレートの管理] を右クリックし、[Citrix_SmartcardLogon] テンプレート上で [Active Directoryの情報から構築する] を [要求に含まれる] に変更します: