SAMLは、従来のユーザー・パスワードによる認証に代わるものとして一般的に使用されつつあります。SAMLを使うことで、様々なIdpと連携した認証を行うことができるようになり、例えば、XenApp/XenDesktopやNetScalerを使ったSSL VPNアクセスに際しての認証をAzure Active Directoryを使って行うことが可能になります。


Azure Active Directoryで認証してXenApp、XenDesktopにアクセス

まずは実際の動きをユーザー視点でご覧ください。

デモ:Azure Active Directoryのアカウントで仮想デスクトップにシングルサインオンしてみる

XenApp/XenDesktop環境の認証をAzure Active Directoryに統合するメリット

  • Azure Active Directoryが提供する多彩な認証オプションを簡単に利用できる
  • 高い可用性が確保されており、自前の2要素認証システムの構築や保守が不要
  • DMZ内のNetScaler Gatewayと社内のActive Directoryサーバーの通信が不要
  • マルチフォレストや複数ドメイン環境でも設定や構成がシンプルに
  • 既にAzure Active Directoryに統合されているSaaSアプリケーションと同じ認証が使える

デモ:Azure Active Directoryでは簡単に2要素認証の設定が行える

デモ:電話による本人確認でXenDesktopにアクセスしてみる

2要素認証でPINコードを入力するのは意外と面倒なものです。こちらは電話に出て確認キーを押すだけ。

デモ:Azureセルフパスワードリセット機能と連携

変更されたパスワードをオンプレのActive Directoryに書き戻すこともできます。

パスワードセルフリセットの要求があった事をユーザーや管理者に通知することも可能。不正アクセスのリスクを軽減。

img_5242

デモ:アクセスパネルからのアクセス

ここで紹介したようにAzure Active Directlyの認証システムと連携させることで、SaaSアプリケーションを含めたシングルサインオンや多彩な認証オプションを簡単に利用することができます。


技術概要

Azure Active DirectoryとWindows Server Active Directoryの違い

Azure Active DirectoryはOffice365やsalesforce.comなどのSaaSアプリケーションのシングルサインオンソリューションです。一方Windows Server Active DirectoryはオンプレミスにおけるWindows環境のシングルサインオンソリューションです。

XenApp/XenDesktop環境ではWindows Server Active Directoryが必須

Windows Server Active Directoryは企業レベルで利用する為の高度なアクセス制御やグループポリシー、移動ユーザープロファイルといった機能が実装されています。これらの機能は仮想デスクトップや仮想アプリケーション環境でも運用上必要不可欠です。従ってAzure Active Directoryで認証連携した場合でも、XenApp/XenDesktop環境ではWindows Server Active Directoryは必須要件になっています。

(参考:Azure Active Directoryのサービスの一部にAzure Active Directory Domain Servicesと呼ばれるものがあります。こちらはWindows Server Active Directoryと同等の機能を提供します。)

Azure ADをIdpとしたSAML認証フローと関連コンポーネント

samlflowoutline

以下は動作の概略になります。

  1. ユーザーがNetScaler(vServer FQDN)にアクセス
  2. NetScalerのSAML認証ポリシーに従ってAzure Active Directoryログインリンクにリダイレクト
  3. Azure Active DirectoryからSAML(UPNクレーム入りの)アサーショントークンを受け取る
  4. 認証の確認を行う
  5. StoreFrontにUPNを渡す
  6. ユーザーを特定
  7. ユーザーの認証用の証明書を作成
  8. 証明書引き換えチケットを発行
  9. VDAがチケット交換して証明書を受け取る
  10. VDAが仮想デスクトップに証明書でログオン

SAMLによるSSO

SAMLを使ってSSOを実現するには、事前にアイデンティティプロバイダ(Idp)とサービスプロバイダ(SP)の間で信頼関係を構築しておく必要があります。ここで紹介しているシナリオではSPであるNetScaler上でIdpであるAzure Active Directoryを、Azure Active Directory上では信頼するSPとしてNetScalerをそれぞれ登録して信頼関係を結びます。

IdpであるAzure Active Directory上にNetScaler(SP)を登録

2017_0419_1334_49

SPであるNeScaler上にAzure Active Directory(Idp)を登録

2017_0419_1348_24

アカウントについて

NetScalerやStoreFrontにはアカウントやシャドーアカウントをマッピングする機能はありません。SAML Name ID(UPNのクレーム)を使いユーザーを特定します。例えばXenApp/XenDesktopにログインするActive Directory上のアカウントが”user1″の場合、UPNは”user1@xxx.xxx.xxx”のようにActive Directory上のアカウント名と一致している必要があります。

尚、Active Directoryのユーザー アカウントの既定の UPN サフィックスは、そのユーザー アカウントが所属するドメインのDNS のドメイン名です。クレームのUPN サフィックスがActive Directoryのユーザー アカウントの既定の UPN サフィックスと異なる場合、Active Directory上で代替UPNサフィックス を追加します。

下記の図の例では既定のActive Directory UPNサフィックス”citrix.lab”に対して、代替のUPN サフィックス”azad002.onmicrosoft.com”を追加しています。

2017_0423_0726_32

2017_0423_0728_42

Citrix Federated Authentication Service

NetScalerやStoreFrontが外部と認証連携してXenApp/XenDesktopにシングルサインオンするには内部のXenApp/XenDesktop環境でCitrix Federated Authentication Service(FAS)を構成する必要があります。FASはActive Directory証明書サービスと連動してユーザーに代わって証明書を要求します。FASが認証の仲介をすることにより、ユーザー(VDA)は内部的にスマートカードと同じ仕組みを使って、パスワードを使わずにActive Directory環境にログオンすることができます。

2017_0423_0717_48

Federated Authentication Serviceの展開

Federated Authentication ServiceはXenApp/XenDesktopのメディアから別途インストールします。Federated Authentication Serviceはサービス本体とCitrx Federated Authentication Service Plug-in(FAS Plug-in)で構成されます。FAS Plug-in はStoreFrontに展開します。

fas1

Federated Authentication Service 上からWindows証明書サービスや証明書テンプレートの展開が容易に行えます。

fas2

StoreFrontはNetScalerに認証を一任

FASが有効化されると、信頼されたStoreFrontサーバーにユーザー認証の判断が委任されます。このシナリオではNetScalerがSPとして動作しますので、StoreFrontは認証の確認を更にNetScalerに一任します。これを行うためにStoreFront 上で認証方法の設定で”NetScalerに認証を委任する”設定を有効にする必要があります。

fassfns


StoreFrontのSAMLサポート

StoreFront 3.9からNetScalerを介在させずにStoreFrontが直接SAML連携できるようになりました。詳しくはこちらのブログ記事をご覧ください。

sfsamlsupport


まとめ

Citrix環境への認証は多様な方法が用意されています。セキュリティ要件含め現在の状況や今後の計画、運用や利便性などに応じてベストなものを選択して頂きたいと思います。


参考リンク

Azure Active Directory とNetScalerの認証連携手順

Integrating NetScaler with Microsoft Azure Active Directory (ホワイトペーパー)

OktaとNetScalerの認証連携

Citrix NetScaler Gateway SAML Configuration Guide