シングルサインオンを構成する
NetScalerシングルサインオン(SSO)を偽装認証するように構成することは、SSOよりも委任による認証を構成するよりも簡単なので、構成で許可されている場合に適しています。KCD アカウントを作成するとします。ユーザーのパスワードを使用できます。
ユーザーのパスワードがわからない場合は、委任による認証を行うようにNetScaler SSOを構成できます。委任方法では、偽装による認証を行うようにSSOを構成するよりも複雑ですが、状況によってはユーザーの資格情報がNetScalerアプライアンスで利用できるとは限らないという柔軟性があります。
偽装または委任の場合は、Web アプリケーションサーバーでも統合認証を有効にする必要があります。
Web アプリケーションサーバーで統合認証を有効にする
Kerberos SSOが管理する各WebアプリケーションサーバーにNetScaler 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 の設定
NetScaler SSOのKCDアカウントは、偽装によって構成できます。この構成では、NetScalerアプライアンスは、ユーザーが認証サーバーで認証されるときにユーザーのユーザー名とパスワードを取得し、それらの資格情報を使用してユーザーになりすましてチケット交付チケット(TGT)を取得します。ユーザー名が UPN 形式の場合、アプライアンスはユーザーのレルムを UPN から取得します。それ以外の場合は、初期認証時に使用された SSO ドメインまたはセッションプロファイルからユーザーの名前とレルムを抽出して取得します。
注
domain なしでユーザー名が既に追加されている場合、domain でユーザー名を追加することはできません。ドメイン付きのユーザー名が最初に追加され、その後にドメインなしの同じユーザー名が追加された場合、NetScalerアプライアンスはそのユーザー名をユーザーリストに追加します。
KCD アカウントを設定するときは、ユーザーがアクセスしているサービスのレルムに realm パラメーターを設定する必要があります。NetScalerアプライアンスまたはセッションプロファイルによる認証でユーザーのレルムを取得できない場合は、同じレルムがユーザーのレルムとしても使用されます。
パスワードを使用して偽装して SSO の KCD アカウントを作成するには
コマンドプロンプトで、次のコマンドを入力します。
add aaa kcdaccount <accountname> -realmStr <realm>
<!--NeedCopy-->
変数の場合は、次の値を置き換えます。
- アカウント名。KCD アカウント名。
- レルム。NetScaler SSOに割り当てられたドメイン。
例
kcdccount1 という名前の KCD アカウントを追加し、kcdvserver.keytab という名前のキータブを使用するには、次のコマンドを入力します。
add aaa kcdAccount kcdaccount1 -keytab kcdvserver.keytab
<!--NeedCopy-->
NetScaler GUIを使用してKerberos偽装を構成する方法については、「NetScalerサポート」を参照してください。
委任によるSSOの構成
委任による SSO を設定するには、次のタスクを実行する必要があります。
- 委任されたユーザー証明書による委任を構成する場合は、一致するCA証明書をNetScalerアプライアンスにインストールし、NetScaler構成に追加します。
- アプライアンスで KCD アカウントを作成します。アプライアンスはこのアカウントを使用して、保護対象アプリケーションのサービスチケットを取得します。
- Active Directory サーバを設定します。
注:
NetScalerアプライアンスでのKCDアカウントの作成と構成について詳しくは、次のトピックを参照してください。
NetScalerアプライアンスへのクライアントCA証明書のインストール
クライアント証明書を使用してNetScaler SSOを構成する場合は、クライアント証明書ドメインと一致するCA証明書(クライアントCA証明書)をNetScalerアプライアンスにコピーしてから、CA証明書をインストールする必要があります。クライアントCA証明書をコピーするには、任意のファイル転送プログラムを使用して証明書と秘密鍵ファイルをNetScalerアプライアンスに転送し、ファイルをそこに保存します。 /nsconfig/ssl
クライアントCA証明書をNetScalerアプライアンスにインストールするには
コマンドプロンプトで、次のコマンドを入力します。
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 証明書ファイルのフルパス名とファイル名。証明書ファイルは、NetScalerアプライアンスの/nsconfig/ssl/ディレクトリに保存する必要があります。
- キー。X509 証明書ファイルへの秘密キーを含むファイルのフルパス名とファイル名。キーファイルは、NetScalerアプライアンスの/nsconfig/ssl/ディレクトリに保存する必要があります。
- password。秘密鍵を指定した場合、秘密鍵の暗号化に使用されるパスフレーズ。暗号化された秘密キーを PEM 形式でロードするには、このオプションを使用します。
-
fipsKey。FIPS アプライアンスのハードウェアセキュリティモジュール (HSM) 内で作成された FIPS キー、または HSM にインポートされたキーの名前。
注
キーと FipsKey のどちらかを指定できますが、両方を指定することはできません。
- inform. 証明書と秘密キーファイルの形式 (PEM または DER)。
- passplain. 秘密鍵の暗号化に使用されるパスフレーズ。暗号化された秘密キーを PEM 形式で追加する場合に必要です。
- expiryMonitor. 証明書の有効期限が近づいたときにアラートを発行するようにNetScalerアプライアンスを構成します。有効な値:有効、無効、未設定。
-
notificationPeriod.
expiryMonitor
がENABLED の場合、証明書が期限切れになる前にアラートを発行するまでの日数。 - bundle. サーバー証明書をファイル内の発行者の証明書にリンクした後、証明書チェーンを 1 つのファイルとして解析します。可能な値:はい、いいえ。
例
次の例では、指定された委任ユーザー証明書customer-cert.pemをcustomer-key.pemキーとともにNetScaler構成に追加し、パスワード、証明書形式、有効期限モニター、および通知期間を設定します。
委任されたユーザー証明書を追加するには、次のコマンドを入力します。
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 アカウントの作成
委任によってNetScaler SSOを構成する場合、KCDアカウントは、ユーザーのログオン名とパスワードを使用するか、ユーザーのログオン名とキータブを使用するか、またはユーザーのクライアント証明書を使用するように構成できます。ユーザー名とパスワードを使用してSSOを構成すると、NetScalerアプライアンスは委任されたユーザーアカウントを使用してチケット交付チケット(TGT)を取得し、TGTを使用して各ユーザーが要求する特定のサービスのサービスチケットを取得します。キータブファイルを使用してSSOを構成すると、NetScalerアプライアンスは委任されたユーザーアカウントとキータブ情報を使用します。委任ユーザー証明書を使用してSSOを構成すると、NetScaler 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 チケットの取得に使用されます。指定しない場合、NetScalerはサービスFQDNを使用してSPNを構築します。最大長:255
例 (UPN 形式):
委任されたユーザーアカウントをUPN形式(root)で指定して、パスワードがpassword1、レルムがEXAMPLE.COMのkcdaccount1という名前のKCDアカウントをNetScalerアプライアンス構成に追加するには、次のコマンドを入力します。
add aaa kcdaccount kcdaccount1 –delegatedUser root
-kcdPassword password1 -realmStr EXAMPLE.COM
<!--NeedCopy-->
例 (SPN 形式):
委任されたユーザーアカウントをSPN形式で指定して、パスワードがpassword1、レルムがEXAMPLE.COMのkcdaccount1という名前のKCDアカウントをNetScalerアプライアンス構成に追加するには、次のコマンドを入力します。
add aaa kcdAccount kcdaccount1 -realmStr EXAMPLE.COM
-delegatedUser "host/kcdvserver.example.com" -kcdPassword password1
<!--NeedCopy-->
キータブを使用した委任による SSO の KCD アカウントの作成
認証に keytab ファイルを使用する場合は、まず keytab を作成します。キータブファイルは、 ktpass
ADサーバーにログオンしてユーティリティを使用して手動で作成することも、NetScaler構成ユーティリティを使用してバッチスクリプトを作成し、そのスクリプトをADサーバーで実行してキータブファイルを生成することもできます。次に、FTPまたは別のファイル転送プログラムを使用してキータブファイルをNetScalerアプライアンスに転送し、/nsconfig/krbディレクトリに配置します。最後に、委任によってNetScaler ADC SSOのKCDアカウントを構成し、キータブファイルのパスとファイル名をNetScaler 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
このファイルはNetScalerアプライアンスに保存でき、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 アカウントのユーザー名。
- password。KSA アカウントのパスワード。
- 道。keytab ファイルが生成された後に保存されるディレクトリのフルパス名。
NetScaler構成ユーティリティを使用してキータブファイルを生成するスクリプトを作成するには
- セキュリティ > AAA-アプリケーショントラフィックに移動します。
- データウィンドウの [ Kerberos 制約付き委任] で、[ バッチファイル ] をクリックして Keytab を生成します。
- 「 KCD (Kerberos 制約付き委任) Keytab スクリプトの生成 」ダイアログ・ボックスで、次のパラメータを設定します。
- ドメインユーザー名。KSA アカウントのユーザー名。
- ドメインパスワード。KSA アカウントのパスワード。
- サービスプリンシパルKSA のサービスプリンシパル名。
- 出力ファイル名。キータブファイルを AD サーバーに保存するフルパスとファイル名。
- [ドメインユーザーアカウントの作成 ] チェックボックスをオフにします。
- [ スクリプトを生成] をクリックします。
- Active Directory サーバにログオンし、コマンドラインウィンドウを開きます。
- [ 生成されたスクリプト] ウィンドウからスクリプトをコピーし、Active Directory サーバのコマンドラインウィンドウに直接貼り付けます。キータブが生成され、「出力ファイル名」(Output File Name) として指定したファイル名のディレクトリに格納されます。
- 任意のファイル転送ユーティリティを使用して、キータブファイルをActive Directory サーバーからNetScalerアプライアンスにコピーし、/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。NetScalerアプライアンス上の委任されたユーザー証明書ファイルのフルパスと名前。委任されたユーザー証明書には、クライアント証明書と秘密キーの両方が含まれていて、PEM 形式である必要があります。スマートカード認証を使用する場合は、秘密キーとともに証明書をインポートできるように、スマートカード証明書テンプレートを作成する必要があります。
- cacert。NetScalerアプライアンス上のCA証明書ファイルのフルパスと名前。
例
kcdccount1 という名前の KCD アカウントを追加し、kcdvserver.keytab という名前のキータブを使用するには、次のコマンドを入力します。
add aaa kcdaccount kcdaccount1 -realmStr EXAMPLE.COM
-delegatedUser "host/kcdvserver.example.com" -usercert /certs/usercert
-cacert /cacerts/cacert
<!--NeedCopy-->
NetScaler SSO用のActive Directory セットアップ
委任によりSSOを構成する場合、NetScalerアプライアンスでKCDアカウントを作成するほかに、LDAP Active Directoryサーバーで対応するKerberosサービスアカウント(KSA)を作成し、サーバーをSSO用に構成する必要があります。KSA を作成するには、Active Directory サーバでアカウント作成プロセスを使用します。Active Directory サーバで SSO を設定するには、KSA のプロパティウィンドウを開きます。[ 委任 ] タブで、[指定したサービスへの委任に対してのみこのユーザーを信頼する] と [任意の認証プロトコルを使用する] オプションを有効にします。(Kerberos only オプションは、プロトコルの移行や制約付き委任を有効にしないため、機能しません)。最後に、NetScaler SSOが管理するサービスを追加します。
注:
[KSA アカウントのプロパティ] ダイアログボックスに [委任] タブが表示されない場合は、説明に従って KSA を構成する前に、Microsoft setspn コマンドラインツールを使用して、タブが表示されるように Active Directory サーバーを構成する必要があります。
Kerberos サービスアカウントの委任を構成するには
- 作成した Kerberos サービスアカウントの [LDAP アカウント構成] ダイアログボックスで、[ 委任 ] タブをクリックします。
- [ 指定したサービスへの委任に対してのみ、このユーザーを信頼する] を選択します。
- [指定したサービスへの委任に対してのみこのユーザーを信頼する] で、[ 任意の認証プロトコルを使用する] を選択します。
- [このアカウントが委任された認証情報を提示できるサービス] で、[ 追加] をクリックします。
- [ サービスの追加 ]ダイアログボックスで、[ ユーザー ]または[ コンピューター]をクリックし、サービスアカウントに割り当てるリソースをホストするサーバーを選択して、[ OK]をクリックします。
注:
- 制約付き委任では、Kerberos が他のドメインと信頼関係を持っている場合でも、アカウントに割り当てられたドメイン以外のドメインでホストされているサービスはサポートされません。
- 新しいユーザが Active Directoryに作成された場合は、次のコマンドを使用して
setspn
を作成します。setspn -A host/kcdvserver.example.com example\kcdtest
- [ サービスの追加 ] ダイアログボックスの [利用可能なサービス] リストに戻り、サービスアカウントに割り当てられているサービスを選択します。NetScaler SSOは、HTTPサービスとMSSQLSVCサービスをサポートします。
- 「 OK」をクリックします。
KCD が子ドメインをサポートできるようにするための設定変更
KCD アカウントが-delegatedUser
でsamAccountName
に設定されている場合、子ドメインからサービスにアクセスするユーザーに対して KCD は機能しません。この場合、NetScalerアプライアンスと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
- NetScalerアプライアンスのKCDアカウントの委任ユーザーを変更します。
- 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>
ドメインユーザー情報
Kerberos SSO に高度な暗号化タイプを使用する場合は、正しいドメインユーザー情報が提供されていることを確認してください。ユーザーのログイン名に関する情報は、Active Directory から取得できます。
ケルベロス委任を使用してNetScaler SSOを構成する場合
委任を使用する Kerberos SSO で高度な暗号化タイプを使用する場合、add aaa kcdaccount
コマンドのdelagatedUser
パラメータはユーザーのサービスプリンシパル名 (SPN) でなければなりません。サービスプリンシパル名は大文字と小文字が区別されます。
ユーザーのサービスプリンシパル名を知るには、Active Directoryドメインコントローラーのsetspn -L <domain\user>
コマンドを使用します。例:setspn -L EXAMPLE\username
サービスプリンシパル名を設定するには、Active Directory ドメインコントローラーのsetspn
コマンドを使用します。キータブファイルを作成するには、Active Directory ktpass
ドメインコントローラーのコマンドを使用します。その方法の例を以下に示します。
-
セットソン:
setspn -S host/username.example.com EXAMPLE\username
-
キータブ:
ktpass /princ host/username.example.com@EXAMPLE.COM /ptype KRB5_NT_PRINCIPAL /mapuser EXAMPLE.COM\username /pass XXXX /crypto AES256-SHA1 -out <pathto.keytab.file>
Active Directory で上記のアクションを実行したら、NetScaler add kcdaccount
setkcdaccount
CLIのまたはコマンドを使用して、構成済みのSPNでKCDアカウントを更新します。
特定のユーザーアカウントの SPN を表示するには、 Active Directory の [ ユーザープロパティ] セクションに移動します。
ケルベロスインパーソネーションを使用してNetScaler SSOを構成する場合
偽装を使用する Kerberos SSO に高度な暗号化タイプを使用する場合は、SSO 認証情報がエンドユーザーの正しいサービスプリンシパル名とともに使用されていることを確認してください。エンドユーザーのログイン認証情報が Kerberos SSO で機能しない場合は、適切なユーザー表現を設定して SSO ユーザー名を設定します。
ユーザープリンシパル名が Active Directory 上のエンドユーザーの正しいサービスプリンシパル名である場合、次のようになります。
-
エンドユーザーのログインに LDAP 認証を使用する場合は、
LDAPAction
コマンドのssoNameAttribute
パラメーターを使用して SSO ユーザー名を設定します。例:
set authentication ldapAction ldap_act -ssoNameAttribute userPrincipalName
-
ユーザーログインに他の認証方法を使用する場合は、
trafficAction
コマンドのuserExpression
パラメーターを使用してください。たとえば、ユーザー属性 1 にユーザープリンシパル名が保存されている場合、トラフィックアクションでAAA.USER.ATTRIBUTE(1)
を使用できます。例:
add tm traffic action traf_act -userExpression AAA.USER.ATTRIBUTE(1)