シングルサインオンを構成する
なりすましによる認証を行うようにCitrix ADCシングルサインオン(SSO)を構成することは、SSOよりも委任による認証を行うように構成するよりも簡単であるため、構成で許可されている場合に適しています。KCD アカウントを作成するとします。ユーザーのパスワードを使用できます。
ユーザーのパスワードがない場合は、委任によって認証されるようにCitrix ADC SSOを構成できます。偽装によって認証するようにSSOを構成するよりも複雑ですが、委任方法を使用すると、すべての状況でCitrix ADCアプライアンスがユーザーの資格情報を使用できないという柔軟性が得られます。
偽装または委任の場合は、Web アプリケーションサーバーでも統合認証を有効にする必要があります。
Web アプリケーションサーバーで統合認証を有効にする
Kerberos SSOが管理する各WebアプリケーションサーバーでCitrix ADC Kerberos SSOを設定するには、そのサーバーの構成インターフェイスを使用して、認証を要求するようにサーバーを構成します。Kerberos をサポートしていないクライアントの場合は NTLM にフォールバックして、Kerberos (ネゴシエート) 認証を優先的に選択します。
次に、認証を要求するように Microsoft インターネットインフォメーションサーバー (IIS) を構成する手順を示します。Web アプリケーションサーバで IIS 以外のソフトウェアを使用している場合は、その Web サーバソフトウェアのマニュアルを参照して手順を確認してください。
統合認証を使用するように Microsoft IIS を構成するには
- IIS サーバーにログオンし、 インターネットインフォメーションサービスマネージャーを開きます。
- 統合認証を有効にする Web サイトを選択します。IISM が管理するすべての IIS Web サーバーに対して統合認証を有効にするには、既定の Web サイトの認証設定を構成します。個々のサービス (Exchange、Exadmin、ExchWeb、Public など) に対して統合認証を有効にするには、これらの認証設定をサービスごとに個別に構成します。
- 既定の Web サイトまたは個々のサービスの [ プロパティ ] ダイアログボックスを開き、[ ディレクトリセキュリティ ] タブをクリックします。
- [ **認証とアクセス制御] の横にある [ **編集] を選択します。
- 匿名アクセスを無効にしてください。
- 統合 Windows 認証を有効にします (のみ)。統合 Windows 認証を有効にすると、Web サーバのプロトコルネゴシエーションが Negotiate、NTLM に自動的に設定される必要があります。これは、Kerberos 非対応デバイスの NTLM にフォールバックする Kerberos 認証を指定します。このオプションが自動的に選択されない場合は、プロトコルネゴシエーションを [Negotiate, NTLM] に手動で設定します。
偽装による SSO の設定
Citrix ADC SSOのKCDアカウントは、偽装によって構成できます。この構成では、Citrix ADCアプライアンスは、ユーザーが認証サーバーに対して認証されると、ユーザーのユーザー名とパスワードを取得し、その資格情報を使用してユーザーを偽装してチケット許可チケット(TGT)を取得します。ユーザー名が UPN 形式の場合、アプライアンスはユーザーのレルムを UPN から取得します。それ以外の場合は、初期認証時に使用された SSO ドメインまたはセッションプロファイルからユーザーの名前とレルムを抽出して取得します。
注
domain なしでユーザー名が既に追加されている場合、domain でユーザー名を追加することはできません。ドメインのあるユーザー名が最初に追加され、次にドメインのない同じユーザー名が追加された場合、Citrix ADCアプライアンスはユーザー名をユーザーリストに追加します。
KCD アカウントを設定するときは、ユーザーがアクセスしているサービスのレルムに realm パラメーターを設定する必要があります。Citrix ADCアプライアンスでの認証またはセッションプロファイルからユーザーのレルムを取得できない場合は、同じレルムがユーザーのレルムとしても使用されます。
パスワードを使用して偽装して SSO の KCD アカウントを作成するには
コマンドプロンプトで、次のコマンドを入力します。
add aaa kcdaccount <accountname> -realmStr <realm>
<!--NeedCopy-->
変数の場合は、次の値を置き換えます。
- アカウント名。KCD アカウント名。
- レルム。Citrix ADC SSOに割り当てられたドメイン。
例
kcdccount1 という名前の KCD アカウントを追加し、kcdvserver.keytab という名前のキータブを使用するには、次のコマンドを入力します。
add aaa kcdAccount kcdaccount1 -keytab kcdvserver.keytab
<!--NeedCopy-->
Citrix ADC GUIを使用したKerberos偽装の構成については、 Citrixサポートを参照してください。
委任によるSSOの構成
委任による SSO を設定するには、次のタスクを実行する必要があります。
- 委任されたユーザー証明書による委任を構成する場合は、一致するCA証明書をCitrix ADCアプライアンスにインストールし、Citrix ADC構成に追加します。
- アプライアンスで KCD アカウントを作成します。アプライアンスはこのアカウントを使用して、保護対象アプリケーションのサービスチケットを取得します。
- Active Directory サーバを設定します。
注:
NetScalerアプライアンスでのKCDアカウントの作成と構成について詳しくは、次のトピックを参照してください。
Citrix ADCアプライアンスへのクライアントCA証明書のインストール
クライアント証明書を使用してCitrix ADC SSOを構成する場合は、クライアント証明書ドメインに一致するCA証明書(クライアントCA証明書)をCitrix ADCアプライアンスにコピーしてから、CA証明書をインストールする必要があります。クライアントCA証明書をコピーするには、選択したファイル転送プログラムを使用して証明書と秘密キーファイルをCitrix ADCアプライアンスに転送し、ファイルを/nsconfig/sslに保存します。
Citrix ADCアプライアンスにクライアントCA証明書をインストールするには
コマンドプロンプトで、次のコマンドを入力します。
add ssl certKey <certkeyName> -cert <cert> [(-key <key> [-password]) | -fipsKey <fipsKey>][-inform ( DER | PEM )][-expiryMonitor ( ENABLED | DISABLED | UNSET ) [-notificationPeriod <positive_integer>]] [-bundle ( YES | NO )]
<!--NeedCopy-->
変数の場合は、次の値を置き換えます。
- certKeyName。クライアント CA 証明書の名前。ASCII 英数字またはアンダースコア (_) 文字で始まり、1 ~ 31 文字で構成されている必要があります。使用できる文字は、ASCII 英数字、アンダースコア、ハッシュ (#)、ピリオド (.)、スペース、コロン (:)、アットマーク (@)、等号 (=)、ハイフン (-) です。証明書とキーのペアの作成後は変更できません。名前に 1 つ以上のスペースが含まれる場合は、名前を二重引用符または一重引用符で囲みます (「my cert」や「my cert」など)。
- 証明書。証明書とキーのペアを形成するために使用される X509 証明書ファイルのフルパス名とファイル名。証明書ファイルは、Citrix ADCアプライアンスの/nsconfig/ssl/ ディレクトリに保存する必要があります。
- キー。X509 証明書ファイルへの秘密キーを含むファイルのフルパス名とファイル名。キーファイルは、Citrix ADCアプライアンスの/nsconfig/ssl/ ディレクトリに保存する必要があります。
- パスワード。秘密鍵を指定した場合、秘密鍵の暗号化に使用されるパスフレーズ。暗号化された秘密キーを PEM 形式でロードするには、このオプションを使用します。
-
fipsKey。FIPS アプライアンスのハードウェアセキュリティモジュール (HSM) 内で作成された FIPS キー、または HSM にインポートされたキーの名前。
注
キーと FipsKey のどちらかを指定できますが、両方を指定することはできません。
- inform. 証明書と秘密キーファイルの形式 (PEM または DER)。
- passplain. 秘密鍵の暗号化に使用されるパスフレーズ。暗号化された秘密キーを PEM 形式で追加する場合に必要です。
- expiryMonitor. 証明書の有効期限が近づいたときにアラートを発行するようにCitrix ADCアプライアンスを構成します。有効な値:有効、無効、未設定。
-
notificationPeriod.
expiryMonitor
がENABLED の場合、証明書が期限切れになる前にアラートを発行するまでの日数。 - bundle. サーバー証明書をファイル内の発行者の証明書にリンクした後、証明書チェーンを 1 つのファイルとして解析します。可能な値:はい、いいえ。
例
次の例では、指定された委任ユーザー証明書customer-cert.pem をキー customer-key.pem とともにCitrix ADC構成に追加し、パスワード、証明書形式、有効期限モニター、および通知期間を設定します。
委任されたユーザー証明書を追加するには、次のコマンドを入力します。
add ssl certKey customer -cert "/nsconfig/ssl/customer-cert.pem"
-key "/nsconfig/ssl/customer-key.pem" -password "dontUseDefaultPWs!"
-inform PEM -expiryMonitor ENABLED [-notificationPeriod 14]
<!--NeedCopy-->
KCD アカウントの作成
Citrix ADC SSOを委任で構成する場合は、ユーザーのログオン名とパスワードを使用するか、ユーザーのログオン名とキータブを使用するか、ユーザーのクライアント証明書を使用するように、KCDアカウントを構成できます。ユーザー名とパスワードを使用してSSOを構成すると、Citrix ADCアプライアンスは委任されたユーザーアカウントを使用してチケット交付チケット(TGT)を取得し、TGTを使用して各ユーザーが要求する特定のサービスのサービスチケットを取得します。キータブファイルを使用してSSOを構成すると、Citrix ADCアプライアンスは委任されたユーザーアカウントとキータブ情報を使用します。委任ユーザー証明書を使用してSSOを構成すると、Citrix ADCアプライアンスは委任ユーザー証明書を使用します。
注:
クロスレルムの場合、委任されたユーザーの servicePrincipalName は
host/<name>
の形式である必要があります。この形式でない場合は、委任されたユーザーの servicePrincipalName<servicePrincipalName>
をhost/<service-account-samaccountname>
に変更します。委任されたユーザーアカウントの属性は、ドメインコントローラーで確認できます。変更する 1 つの方法は、委任されたユーザーのlogonName
属性を変更することです。
パスワードを使用して委任して SSO の KCD アカウントを作成するには
コマンドプロンプトで、次のコマンドを入力します。
add aaa kcdAccount <kcdAccount> {-realmStr <string>} {-delegatedUser <string>} {-kcdPassword } [-userRealm <string>]
[-enterpriseRealm <string>] [-serviceSPN <string>]
<!--NeedCopy-->
変数の場合は、次の値を置き換えます。
- kcdAccount -KCD アカウントの名前。これは必須の議論です。最大長:31
- realmStr -ケルベロスの領域。最大長:255
-
delegatedUser -Kerberos 制約付き委任を実行できるユーザー名。委任されたユーザー名は、ドメインコントローラーの ServicePrincipalName から派生します。クロスレルムの場合、委任されたユーザーのServicePrincipalNameは
host/<name>
の形式である必要があります。最大長:255 - kcdPassword -委任されたユーザーのパスワード。最大長:31
- userRealm -ユーザーのレルム。最大長:255
- EnterpriseRealm -ユーザーのエンタープライズレルム。これは、KDC がプリンシパル名ではなくエンタープライズユーザー名を要求する特定の KDC 展開でのみ指定されます。最大長:255
- serviceSPN -サービス SPN。指定すると、Kerberos チケットの取得に使用されます。指定しない場合、Citrix ADC はサービス FQDN を使用して SPN を構築します。最大長:255
例 (UPN 形式):
パスワード1、レルム EXAMPLE.COM を使用して、委任されたユーザーアカウントをUPN形式(root)で指定して、kcdaccount1 という名前のKCDアカウントをCitrix ADCアプライアンス構成に追加するには、次のコマンドを入力します。
add aaa kcdaccount kcdaccount1 –delegatedUser root
-kcdPassword password1 -realmStr EXAMPLE.COM
<!--NeedCopy-->
例 (SPN 形式):
パスワード1、レルム EXAMPLE.COM で、委任されたユーザーアカウントをSPN形式で指定して、kcdaccount1という名前のKCDアカウントをCitrix ADCアプライアンス構成に追加するには、次のコマンドを入力します。
add aaa kcdAccount kcdaccount1 -realmStr EXAMPLE.COM
-delegatedUser "host/kcdvserver.example.com" -kcdPassword password1
<!--NeedCopy-->
キータブを使用した委任による SSO の KCD アカウントの作成
認証に keytab ファイルを使用する場合は、まず keytab を作成します。キータブファイルは、ADサーバーにログオンしてktpass
ユーティリティを使用して手動で作成することも、Citrix ADC構成ユーティリティを使用してバッチスクリプトを作成し、そのスクリプトをADサーバーで実行してキータブファイルを生成することもできます。次に、FTPまたは別のファイル転送プログラムを使用してキータブファイルをCitrix ADCアプライアンスに転送し、/nsconfig/krbディレクトリに配置します。最後に、委任によってCitrix ADC SSOのKCDアカウントを構成し、キータブファイルのパスとファイル名をCitrix ADCアプライアンスに指定します。
注:
クロスレルムで Keytab ファイルを KCD アカウントの一部として取得する場合は、更新された委任ユーザー名に対して次のコマンドを使用します。
ドメインコントローラーで、更新された Keytab ファイルを作成します。
ktpass /princ <servicePrincipalName-with-prefix<host/>Of-delegateUser>@<DC REALM in uppercase> /ptype KRB5_NT_PRINCIPAL /mapuser <DC REALM in uppercase>\<sAMAccountName> /pass <delegatedUserPassword> -out filepathfor.keytab
この
filepathfor.keytab
ファイルはCitrix ADCアプライアンスに配置でき、ADC KCDアカウントのKeytab構成の一部として使用できます。
keytab ファイルを手動で作成するには
AD Server コマンドラインにログオンし、コマンドプロンプトで次のコマンドを入力します。
ktpass princ <SPN> ptype KRB5_NT_PRINCIPAL mapuser <DOMAIN><username> pass <password> -out <File_Path>
<!--NeedCopy-->
変数の場合は、次の値を置き換えます。
- SPN。KCD サービスアカウントのサービスプリンシパル名。
- ドメイン。Active Directory サーバのドメイン。
- username)を使用します。KSA アカウントのユーザー名。
- パスワード。KSA アカウントのパスワード。
- 道。keytab ファイルが生成された後に保存されるディレクトリのフルパス名。
Citrix ADC構成ユーティリティを使用して、keytabファイルを生成するスクリプトを作成するには
- セキュリティ > AAA-アプリケーショントラフィックに移動します。
- データウィンドウの [ Kerberos 制約付き委任] で、[ バッチファイル ] をクリックして Keytab を生成します。
- 「 KCD (Kerberos 制約付き委任) Keytab スクリプトの生成 」ダイアログ・ボックスで、次のパラメータを設定します。
- ドメインユーザー名。KSA アカウントのユーザー名。
- ドメインパスワード。KSA アカウントのパスワード。
- サービスプリンシパルKSA のサービスプリンシパル名。
- 出力ファイル名。キータブファイルを AD サーバーに保存するフルパスとファイル名。
- [ドメインユーザーアカウントの作成 ] チェックボックスをオフにします。
- [ スクリプトを生成] をクリックします。
- Active Directory サーバにログオンし、コマンドラインウィンドウを開きます。
- [ 生成されたスクリプト] ウィンドウからスクリプトをコピーし、Active Directory サーバのコマンドラインウィンドウに直接貼り付けます。キータブが生成され、「出力ファイル名」(Output File Name) として指定したファイル名のディレクトリに格納されます。
- 選択したファイル転送ユーティリティを使用して、キータブファイルをActive Directory yサーバーからCitrix ADCアプライアンスにコピーし、/nsconfig/krbディレクトリに配置します。
KCD アカウントを作成するには
コマンドプロンプトで、次のコマンドを入力します。
add aaa kcdaccount <accountname> –keytab <keytab>
<!--NeedCopy-->
例
kcdccount1 という名前の KCD アカウントを追加し、kcdvserver.keytab という名前のキータブを使用するには、次のコマンドを入力します。
add aaa kcdaccount kcdaccount1 –keytab kcdvserver.keytab
<!--NeedCopy-->
委任されたユーザー証明書を使用して委任によって SSO の KCD アカウントを作成するには
コマンドプロンプトで、次のコマンドを入力します。
add aaa kcdaccount <accountname> -realmStr <realm> -delegatedUser <user_nameSPN> -usercert <cert> -cacert <cacert>
<!--NeedCopy-->
変数の場合は、次の値を置き換えます。
- アカウント名。KCD アカウントの名前。
- realmStr。KCD アカウントのレルム。通常は SSO が設定されているドメインです。
- 委任されたユーザー。委任されたユーザー名 (SPN 形式)。
- usercert。Citrix ADCアプライアンス上の委任ユーザー証明書ファイルのフルパスと名前。委任されたユーザー証明書には、クライアント証明書と秘密キーの両方が含まれていて、PEM 形式である必要があります。スマートカード認証を使用する場合は、秘密キーとともに証明書をインポートできるように、スマートカード証明書テンプレートを作成する必要があります。
- cacert。Citrix ADCアプライアンス上のCA証明書ファイルへのフルパスと名前。
例
kcdccount1 という名前の KCD アカウントを追加し、kcdvserver.keytab という名前のキータブを使用するには、次のコマンドを入力します。
add aaa kcdaccount kcdaccount1 -realmStr EXAMPLE.COM
-delegatedUser "host/kcdvserver.example.com" -usercert /certs/usercert
-cacert /cacerts/cacert
<!--NeedCopy-->
Citrix ADC SSO用のActive Directory セットアップ
委任によってSSOを構成する場合は、Citrix ADCアプライアンスにKcdAccountを作成することに加えて、一致するKerberosサービスアカウント(KSA)をLDAP Active Directoryサーバー上に作成し、そのサーバーをSSO用に構成する必要があります。KSA を作成するには、Active Directory サーバでアカウント作成プロセスを使用します。Active Directory サーバで SSO を設定するには、KSA のプロパティウィンドウを開きます。[ 委任 ] タブで、[指定したサービスへの委任に対してのみこのユーザーを信頼する] と [任意の認証プロトコルを使用する] オプションを有効にします。(Kerberos only オプションは、プロトコルの移行や制約付き委任を有効にしないため、機能しません)。最後に、Citrix ADC SSOが管理するサービスを追加します。
注:
[KSA アカウントのプロパティ] ダイアログボックスに [委任] タブが表示されない場合は、説明に従って KSA を構成する前に、Microsoft setspn コマンドラインツールを使用して、タブが表示されるように Active Directory サーバーを構成する必要があります。
Kerberos サービスアカウントの委任を構成するには
- 作成した Kerberos サービスアカウントの [LDAP アカウント構成] ダイアログボックスで、[ 委任 ] タブをクリックします。
- [ 指定したサービスへの委任に対してのみ、このユーザーを信頼する] を選択します。
- [指定したサービスへの委任に対してのみこのユーザーを信頼する] で、[ 任意の認証プロトコルを使用する] を選択します。
- [このアカウントが委任された認証情報を提示できるサービス] で、[ 追加] をクリックします。
- [ サービスの追加 ]ダイアログボックスで、[ ユーザー ]または[ コンピューター]をクリックし、サービスアカウントに割り当てるリソースをホストするサーバーを選択して、[ OK]をクリックします。
注:
- 制約付き委任では、Kerberos が他のドメインと信頼関係を持っている場合でも、アカウントに割り当てられたドメイン以外のドメインでホストされているサービスはサポートされません。
- 新しいユーザが Active Directoryに作成された場合は、次のコマンドを使用して
setspn
を作成します。setspn -A host/kcdvserver.example.com example\kcdtest
- [ サービスの追加 ] ダイアログボックスの [利用可能なサービス] リストに戻り、サービスアカウントに割り当てられているサービスを選択します。Citrix ADC SSO は HTTP および MSSQLSVC サービスをサポートします。
- 「 OK」をクリックします。
KCD が子ドメインをサポートできるようにするための設定変更
KCD アカウントが-delegatedUser
でsamAccountName
に設定されている場合、子ドメインからサービスにアクセスするユーザーに対して KCD は機能しません。この場合、Citrix ADCアプライアンスとActive Directory の構成を変更できます。
-
AD のサービスアカウント
<service-account-samaccountname>
(KCD アカウントで delegateUser として設定されている) のログオン名をhost/<service-account-samaccountname>.<completeUSERDNSDOMAIN>
形式 (例:host/svc_act.child.parent.com
) で変更します。サービスアカウントは手動で、または
ktpass
コマンドを使用して変更できます。ktpass
は、サービスアカウントを自動的に更新します。ktpass /princ host/svc_act.child.parent.com@CHILD.PARENT.COM /ptype KRB5_NT_PRINCIPAL /mapuser CHILD\sv_act /pass serviceaccountpassword -out filepathfor.keytab
- Citrix ADCアプライアンスのKCDアカウントでDelegatedUserを変更します。
- KCD アカウントの-delegatedUser パラメータを次のように変更します。
host/svc_act.child.parent.com
KCD アカウントの設定に高度な暗号化を使用する場合の注意点
- keytab を使用する場合の設定例:
add kcdaccount lbvs_keytab_aes256 -keytab "/nsconfig/krb/kcd2_aes256.keytab"
- keytab に複数の暗号化タイプがある場合は、次のコマンドを使用します。このコマンドは、ドメインユーザーパラメーターもキャプチャします。
add kcdaccount lbvs_keytab_aes256 -keytab "/nsconfig/krb/kcd2_aes256.keytab" –domainUser "HTTP/lbvs.aaa.local”
- ユーザクレデンシャルを使用する場合は、次のコマンドを使用します。
add kcdaccount kslb2_user -realmStr AAA.LOCAL -delegatedUser lbvs -kcdPassword <password>
- 正しい domainUser 情報が提供されていることを確認します。AD でユーザーログオン名を検索できます。