Citrix ADC

Active Directory フェデレーションサービスプロキシ統合プロトコルの準拠

Web アプリケーションプロキシの代わりにサードパーティのプロキシを使用する場合は、ADFS と WAP の統合ルールを指定する MS-ADFSPIP プロトコルをサポートする必要があります。ADFSPIP は、Active Directory フェデレーションサービスと認証およびアプリケーションプロキシを統合し、その境界の外側にあるクライアントに対して、企業ネットワークの境界内にあるサービスへのアクセスを可能にします。

ローカライズされた画像

前提条件

プロキシサーバーとADFSファーム間の信頼関係を正常に確立するには、Citrix ADCアプライアンスで次の構成を確認します。

  • バックエンドの SSL プロファイルを作成し、SSL プロファイルで SNI を有効にします。SSLv3/TLS1 を無効にします。コマンドプロンプトで、次のコマンドを入力します。

     add ssl profile <new SSL profile> -sniEnable ENABLED -ssl3 DISABLED -tls1 DISABLED -commonName <FQDN of ADFS>
    
  • サービスの SSLv3/TLS1 を無効にします。コマンドプロンプトで、次のコマンドを入力します。

     set ssl service <adfs service name> -sslProfile ns_default_ssl_profile_backend
    
  • バックエンドサーバハンドシェイクの SNI 拡張を有効にします。コマンドプロンプトで、次のコマンドを入力します。

     set vpn parameter –backendServerSni ENABLED
    
     set ssl parameter -denySSLReneg NONSECURE
    

重要

ADFSサーバーに認証をオフロードする必要があるHome Realm Discovery(HRD)シナリオでは、Citrix ADC アプライアンスで認証とSSOの両方を無効にすることをお勧めします。

認証メカニズム

次に、認証のイベントの概要フローを示します。

  1. ADFSサーバーとの信頼を確立 する — Citrix ADCサーバーは、クライアント証明書を登録して、ADFSサーバーとの信頼を確立します。信頼が確立されると、Citrix ADCアプライアンスは再起動後にユーザーの介入なしに信頼を再確立します。

    証明書の有効期限が切れたら、ADFSプロキシプロファイルを再度削除して追加して、信頼を再確立する必要があります。

  2. 公開済みエンドポイント -Citrix ADCアプライアンスは、ADFSサーバーの公開済みエンドポイントのリストを自動的に取得します。これらの公開されたエンドポイントは、ADFS サーバーに転送される要求をフィルタリングします。

  3. クライアント要求にヘッダーを挿入 する — Citrix ADCアプライアンスがクライアント要求をトンネリングすると、ADFSPIPに関連するHTTPヘッダーがADFSサーバーに送信される際にパケットに追加されます。これらのヘッダー値に基づいて、ADFS サーバーでアクセス制御を実装できます。次のヘッダーがサポートされています。

    • X-MS-Proxy
    • X-MS-Endpoint-Absolute-Path
    • X-MS-Forwarded-Client-IP
    • X-MS-Proxy
    • X-MS-Target-Role
    • X-MS-ADFS-Proxy-Client-IP
  4. エンドユーザーのトラフィックを管理する — エンドユーザーのトラフィックは、必要なリソースに安全にルーティングされます。

    Citrix ADCアプライアンスはフォームベースの認証を使用します。

ADFSサーバーで動作するようにCitrix ADCを構成する

前提条件

  • CS(コンテキストスイッチング)サーバを、CS の背後にある認証、承認、および監査サーバを備えたフロントエンドとして構成します。コマンドプロンプトで、次のように入力します。

     add cs vserver <cs vserver name> SSL 10.220.xxx.xx 443
     -cltTimeout 180 -AuthenticationHost <adfs server hostname> -Authentication OFF -persistenceType NONE
    
     add cs action <action name1> -targetLBVserver <lb vserver name>
    
    
     add cs action <action name2> -targetLBVserver <lb vserver name>
    
     add cs policy <policy name1> -rule " http.req.url.contains("/adfs/services/trust") || http.req.url.contains("federationmetadata/2007-06/federationmetadata.xml")" -action <action name1>
    
     add cs policy <policy name2> -rule "HTTP.REQ.URL.CONTAINS("/adfs/ls")" -action <action name2>
    
     bind cs vserver <cs vserver name> -policyName <policy name1> -priority 100
    
     bind cs vserver <cs vserver name> -policyName <policy name2> -priority 110
    
     bind cs vserver <cs vserver name> -lbvserver <lb vserver name>
    
  • ADFS サービスを追加します。コマンドプロンプトで、次のように入力します。

     add service <adfs service name> <adfs server ip> SSL 443
    
     set ssl service <adfs service name> -sslProfile ns_default_ssl_profile_backend
    
  • 負荷分散された仮想サーバーを追加します。コマンドプロンプトで、次のように入力します。

     add lb vserver <lb vserver name> SSL 0.0.0.0 0
    
     set ssl vserver <lb vserver name> -sslProfile ns_default_ssl_profile_frontend
    
  • 負荷分散されたサーバーにサービスをバインドします。コマンドプロンプトで、次のように入力します。

     bind lb vserver <lb vserver name> <adfs service name>
    

ADFSサーバーで動作するようにCitrix ADCを構成するには、次の操作を行う必要があります。

  1. ADFS プロキシプロファイルで使用する SSL CertKey プロファイルキーを作成します。
  2. ADFS プロキシプロファイルを作成する
  3. ADFS プロキシプロファイルを LB 仮想サーバーに関連付けます。

ADFS プロキシプロファイルで使用する秘密キーを使用して SSL 証明書を作成する

コマンドプロンプトで、次のように入力します。

    add ssl certkey <certkeyname> –cert <certificate path> -key <keypath>

注: 証明書ファイルとキーファイルは、Citrix ADCアプライアンスに存在する必要があります。 CLI を使用した ADFS プロキシプロファイルの作成

コマンドプロンプトで、次のように入力します。

add authentication adfsProxyProfile  <profile name> -serverUrl <https://<server FQDN or IP address>/> -username <adfs admin user name> -password <password for admin user> -certKeyName <name of the CertKey profile created above>

各項目の意味は次の通りです。

プロファイル名:作成するAFDSプロキシ・プロファイルの名前

ServerUrl — プロトコルとポートを含む ADFS サービスの完全修飾ドメイン名。例: https://adfs.citrix.com

ユーザー名 — ADFS サーバー上に存在する管理者アカウントのユーザー名

パスワード:ユーザー名として使用される管理者アカウントのパスワード

certKeyName — 以前に作成された SSL 証明書キープロファイルの名前

CLI を使用して ADFS プロキシプロファイルを負荷分散仮想サーバーに関連付ける

ADFS 展開では、2 つの負荷分散仮想サーバーがあります。1 つはクライアントトラフィック用で、もう 1 つはメタデータ交換用です。ADFS プロキシプロファイルは、ADFS サーバーのフロントエンドである負荷分散仮想サーバーに関連付けられている必要があります。

コマンドプロンプトで、次のように入力します。

set lb vserver <adfs-proxy-lb> -adfsProxyProfile <name of the ADFS proxy profile>

ADFSPIP に対する信頼更新サポート

有効期限が近づいている既存の証明書の信頼を更新するか、既存の証明書が有効でない場合は、その信頼を更新できます。証明書の信頼の更新は、Citrix ADCアプライアンスとADFSサーバー間で信頼が確立された場合にのみ行われます。証明書の信頼を更新するには、新しい証明書を提供する必要があります。

重要

新しい証明書の信頼の更新には、手動による介入が必要です。

次の例では、証明書信頼の更新に関連する手順を示します。

  1. Citrix ADCアプライアンスは、信頼の更新のために、POST要求で古い(シリアル化された信頼証明書)証明書と新しい(シリアル化された置換証明書)証明書の両方をADFSサーバーに送信します。
  2. 信頼が正常に更新された場合、ADFS サーバーは 200 OK の成功で応答します。
  3. 信頼の更新が成功すると、Citrix ADCアプライアンスは状態を「ESTABLISHED_RENEW_SUCCESS」として更新します。信頼の更新が失敗した場合、状態は「ESTABLISHED_RENEW_FAILED」として更新され、Citrix ADCアプライアンスは古い証明書を使用し続けます。

既にいくつかの ADFS プロキシプロファイルにバインドされている場合は、証明書キーを更新できません。

CLI を使用して証明書の信頼更新を構成するには

コマンドプロンプトで、次のように入力します。

set authentication adfsProxyProfile <name> [-CertKeyName <string>]

例:

set authentication adfsProxyProfile adfs_2 –CertKeyName ca_cert1

ADFS サーバーでのクライアント証明書ベースの認証

Windows サーバー 2016 以降、Microsoftでは、プロキシサーバー経由で ADFS にアクセスするときにユーザーを認証する新しい方法が導入されました。これで、エンドユーザーは証明書を使用してログインできるようになり、パスワードを使用する必要がなくなります。

エンドユーザーは、多くの場合、プロキシ経由で ADFS にアクセスします。特に、オンプレミスでない場合です。したがって、ADFS プロキシサーバーは、ADFSPIP プロトコルによるクライアント証明書の認証をサポートする必要があります。

Citrix ADCアプライアンスを使用してADFSの負荷分散を行う場合、ADFSサーバーでの証明書ベースの認証をサポートするには、証明書を使用してCitrix ADCアプライアンスにもログインする必要があります。これにより、Citrix ADCはユーザー証明書をADFSに渡して、ADFSサーバーにSSOを提供できるようになります。

次の図は、クライアント証明書の認証フローを示しています。

ローカライズされた画像

クライアント証明書を使用して ADFS サーバーの SSO を構成する

クライアント証明書を使用してADFSサーバーのSSOを構成するには、まずCitrix ADCアプライアンスでクライアント証明書の認証を構成する必要があります。次に、証明書認証ポリシーを認証、承認、および監査仮想サーバーにバインドする必要があります。

コマンドプロンプトで、「;」と入力します。

add authentication certAction <action name>

add authentication Policy <policy name> -rule <expression> -action <action name>

add authentication policylable <label Name>

bind authentication policylabel <label Name> -policyName <name of the policy> -priority<integer>

例:

add authentication certAction adfsproxy-cert

add authentication Policy cert1 -rule TRUE -action adfsproxy-cert

add authentication policylable certfactor

bind authentication policylabel certfactor –policyName cert1 –priority 100

Citrix ADCアプライアンスでのクライアント証明書の設定については、高度なポリシーを使用してクライアント証明書認証を構成するを参照してください。

Active Directory フェデレーションサービスプロキシ統合プロトコルの準拠