Active Directoryフェデレーションサービスプロキシ統合プロトコルへの準拠
Web アプリケーションプロキシの代わりにサードパーティプロキシを使用する場合は、ADFS と WAP の統合ルールを指定する MS-ADFSPIP プロトコルをサポートしている必要があります。ADFSPIP は Active Directory フェデレーションサービスを認証およびアプリケーションプロキシと統合し、企業ネットワークの境界の外側にあるクライアントが、企業ネットワークの境界内にあるサービスにアクセスできるようにします。
前提条件
プロキシサーバーとADFSファーム間の信頼を正常に確立するには、NetScalerアプライアンスの次の構成を確認してください。
-
バックエンドの SSL プロファイルを作成し、SSL プロファイルで SNI を有効にします。SSLv3/TLS1 を無効にします。コマンドプロンプトで、次のコマンドを入力します:
add ssl profile <new SSL profile> -sniEnable ENABLED -ssl3 DISABLED -tls1 DISABLED -commonName <FQDN of ADFS> <!--NeedCopy-->
-
サービスの SSLv3/TLS1 を無効にします。コマンドプロンプトで、次のコマンドを入力します:
set ssl profile <adfs service name> -sessReuse <ENABLED|DISABLED> -tls1 <ENABLED|DISABLED> -SNIEnable <ENABLED|DISABLED> -commonName <name> -denySSLReneg <YES|NO> <!--NeedCopy-->
>**重要**
>
> 認証をADFSサーバーにオフロードする必要があるホームレルム検出(HRD)シナリオでは、NetScalerアプライアンスで認証とSSOの両方を無効にすることをお勧めします。
## 認証メカニズム
認証のイベントフローの概要を次に示します。
1. **ADFSサーバーとの信頼の確立** — NetScalerサーバーは、クライアント証明書を登録することによってADFSサーバーとの信頼を確立します。信頼が確立されると、NetScalerアプライアンスは再起動後にユーザーの介入なしに信頼を再確立します。
証明書の有効期限が切れたら、ADFS プロキシプロファイルを削除して再度追加して、信頼を再確立する必要があります。
1. **公開エンドポイント** -NetScalerアプライアンスは、信頼確立後にADFSサーバー上の公開エンドポイントのリストを自動的に取得します。これらの公開されたエンドポイントは、ADFS サーバーに転送される要求をフィルタリングします。
1. **クライアント要求へのヘッダーの挿入** — NetScalerアプライアンスがクライアント要求をトンネリングすると、ADFSサーバーへの送信中にADFSPIPに関連するHTTPヘッダーがパケットに追加されます。ADFS サーバーでは、これらのヘッダー値に基づいてアクセス制御を実装できます。次のヘッダーがサポートされています。
- X-MSプロキシ
- X-MS-エンドポイント-絶対パス
- X-MS 転送クライアント IP
- X-MSプロキシ
- X-MS-ターゲット-ロール
- X-MS-ADFS-プロキシ-クライアント-IP
1. **エンドユーザートラフィックの管理** — エンドユーザートラフィックは、目的のリソースに安全にルーティングされます。
> **注:**
>
>- NetScalerはフォームベースの認証を使用します。
>
>- NetScalerは、Active Directory フェデレーションサービスのプロキシ統合プロトコルコンプライアンスを使用したアプリケーションの公開をサポートしていません。
## ADFSサーバーをサポートするようにNetScalerを構成する
### 前提条件
- Context Switching(CS; コンテキストスイッチング)サーバをフロントエンドとして設定し、CS の背後に認証、許可、および監査サーバコマンドプロンプトで入力します:
```
add cs vserver cs_adfs_proxy SSL a.b.c.d 443 -cltTimeout 180 -AuthenticationHost adfs.ns.com
<!--NeedCopy-->
```
add cs action adfs_proxy_cs_act -targetVserver avs_adfs_proxy
<!--NeedCopy--> ```
```
add cs policy adfs_proxy_policy -rule is_vpn_url -action adfs_proxy_cs_act
<!--NeedCopy--> ```
```
bind cs vserver cs_adfs_proxy -policyName adfs_proxy_policy -priority 100
<!--NeedCopy--> ```
```
bind cs vserver cs_adfs_proxy -lbvserver lb_adfs_proxy
<!--NeedCopy--> ```
-
ADFS サービスを追加します。コマンドプロンプトで入力します:
add service adfs_service adfs_server SSL 443 set ssl service adfs_service -sslProfile ns_default_ssl_profile_backend bind ssl service adfs_service -certkeyName adfs_trust_cert <!--NeedCopy-->
set ssl profile ns_default_ssl_profile_backend -sessReuse ENABLED -tls1 DISABLED -SNIEnable ENABLED -commonName www.server.com -denySSLReneg NO <!--NeedCopy-->
-
負荷分散仮想サーバーを追加します。コマンドプロンプトで入力します:
add lb vserver lb_adfs_proxy SSL 0.0.0.0 0 -AuthenticationHost adfs.ns.com -Authentication ON -adfsProxyProfile adfs_proxy_profile <!--NeedCopy-->
-
ADFS トラフィックポリシーと ADFS サービスを負荷分散仮想サーバーにバインドします。コマンドプロンプトで入力します:
`` bind lb vserver lb_adfs_proxy adfs_service
bind lb vserver lb_adfs_proxy -policyName adfs_traffic_pol -priority 1 -type REQUEST ```
-
SNIP アドレスを設定します:
add ns ip p.q.r.s 255.255.255.0 -type SNIP
-
トラフィックアクションとポリシーを設定します:
add tm trafficAction adfs_traffic_action -SSO ON -formSSOAction adfs_form_action add tm formSSOAction adfs_form_action -actionURL "/adfs/ls" -userField UserName -passwdField Password -ssoSuccessRule "HTTP.RES.SET_COOKIE.EQ("MSISAuth")" -nameValuePair AuthMethod=FormsAuthentication -submitMethod POST add tm trafficAction adfs_traffic_action -SSO ON -formSSOAction adfs_form_action add tm trafficPolicy adfs_traffic_pol "HTTP.REQ.URL.EQ("/adfs/ls/")" adfs_traffic_action
NetScalerがADFSサーバーと連携するように構成するには、以下を実行する必要があります。
- ADFS プロキシプロファイルで使用する SSL CertKey プロファイルキーを作成する
- ADFS プロキシプロファイルを作成する
- ADFS プロキシプロファイルを負荷分散仮想サーバーに関連付けます
GUI を使用して ADFS プロキシプロファイルで使用する秘密鍵を含む SSL 証明書を作成する
-
[ トラフィック管理] > [SSL] > [証明書] > [CA 証明書] に移動します。
-
詳細ペインで、[ インストール] をクリックします。 [ 証明書のインストール ] ダイアログボックスで、証明書やキーファイル名などの詳細を入力し、[ 証明書バンドル] を選択します。
-
[ インストール] をクリックし、[ 閉じる] をクリックします。
CLI を使用して ADFS プロキシプロファイルで使用するプライベートキーを含む SSL 証明書を作成する
コマンドプロンプトで入力します:
add ssl certKey aaa_local -cert aaa_local.cer -key aaa_local.key
注: 証明書ファイルとキーファイルはNetScalerアプライアンスにある必要があります。
GUI を使用して ADFS プロキシプロファイルを作成する
-
[ 設定] > [セキュリティ] > [AAA アプリケーショントラフィック] > [AdfsProxy プロファイル] に移動します。
-
AdfsProxy プロファイルページで 「 追加 」をクリックします。
-
「 ADFSProxy プロファイルの作成 」ページで、次のパラメータを設定します:
- 名前:ADFS プロキシプロファイルに名前を割り当てます。
- ユーザー名: プロキシとして機能するNetScalerからの信頼要求の認証に使用されるディレクトリ内のアカウントの名前です。
- パスワード:これはアカウントのパスワードです。
- サーバー URL: ADFS サーバーの FQDN。
- 証明書キー名: ADFS サーバーに登録されているプロキシの SSL 証明書。
-
[作成] をクリックします。
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>
add dns addRec adfs.server.com 10.106.30.151
例:
add authentication adfsProxyProfile adfs_proxy_profile -userName test -password test -serverURL "https://adfs.server.com" -CertKeyName adfs_trust_cert
注:
ADFS プロキシと ADFS サーバーは、証明書が ADFS サーバーの認証局によって署名されている場合にのみ信頼を確立できます。
GUI を使用して ADFS プロキシプロファイルを負荷分散仮想サーバーに関連付けます
-
[ トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、SSL 仮想サーバーを選択します。
-
[編集]をクリックします。
-
「 詳細設定」で、「 プロフィール」をクリックします。
-
前に作成した ADFS プロファイルを選択します。
-
「 OK」 をクリックし、「 完了」をクリックします。
CLI を使用して ADFS プロキシプロファイルを負荷分散仮想サーバーに関連付けます
ADFS デプロイメントでは、2 つの仮想サーバーが使用されます。1 つはクライアントトラフィック用、もう 1 つはメタデータ交換用です。ADFS プロキシプロファイルは、ADFS サーバーのフロントエンドである負荷分散仮想サーバーに関連付ける必要があります。
コマンドプロンプトで入力します:
set ssl vserver lb_adfs_proxy -sslProfile ns_default_ssl_profile_frontend
ADFSPIP の信頼更新サポート
有効期限が近づいているか、既存の証明書が有効でない場合は、既存の証明書の信頼を更新できます。証明書の信頼更新は、NetScalerアプライアンスとADFSサーバー間で信頼が確立された場合にのみ行われます。証明書の信頼性を更新するには、新しい証明書を提供する必要があります。
重要:
新しい証明書の信頼更新には、手動による介入が必要です。
次の例は、証明書信頼の更新に関係する手順を示しています。
- NetScalerアプライアンスは、古い証明書(シリアル化された信頼証明書)と新しい証明書(シリアル化された代替証明書)の両方をPOSTリクエストでADFSサーバーに送信して信頼を更新します。
- 信頼が正常に更新されると、ADFS サーバーは 200 OK 成功を返して応答します。
- 信頼の更新が成功すると、NetScalerアプライアンスは状態を「ESTABLISHED_RENEW_SUCCESS」として更新します。トラストの更新に失敗すると、状態は「ESTABLISHED_RENEW_FAILED」に更新され、NetScalerアプライアンスは古い証明書を使い続けます。
注:
証明書キーがすでに ADFS プロキシプロファイルにバインドされている場合は、証明書キーを更新できません。
CLI を使用して証明書の信頼更新を設定するには
コマンドプロンプトで入力します:
add ssl certKey <name> -cert <certificate file> -key <key file>
add authentication vserver <name> SSL <ipaddress> <port>
bind ssl vserver <virtual server name> -certkeyName <string>
例:
add ssl certKey adfs_trust_cert -cert "client/client_rsa_2048.pem" -key "client/client_rsa_2048.ky"
注:
証明書は ADFS サーバーの認証局が発行する必要があります。
add authentication vserver avs_adfs_proxy SSL 0.0.0.0
bind ssl vserver avs_adfs_proxy -certkeyName aaa_local
ADFS サーバーでのクライアント証明書ベースの認証
Microsoftは、Windows Server 2016 以降、プロキシサーバーを介して ADFS にアクセスするときにユーザーを認証する新しい方法を導入しました。これで、エンドユーザーは証明書を使用してログインできるようになり、パスワードの使用を回避できます。
エンドユーザーは、特に社内にいない場合に、プロキシ経由で ADFS にアクセスすることがよくあります。したがって、ADFS プロキシサーバーは ADFSPIP プロトコルによるクライアント証明書認証をサポートする必要があります。
NetScalerアプライアンスを使用してADFSの負荷分散を行う場合、ADFSサーバーで証明書ベースの認証をサポートするには、ユーザーは証明書を使用してNetScalerアプライアンスにログインする必要もあります。これにより、NetScalerはユーザー証明書をADFSに渡して、ADFSサーバーにSSOを提供できます。
次の図は、クライアント証明書認証フローを示しています。
クライアント証明書を使用して ADFS サーバの SSO を設定する
クライアント証明書を使用してADFSサーバーのSSOを構成するには、まずNetScalerアプライアンスでクライアント証明書認証を構成する必要があります。次に、証明書認証ポリシーを認証、承認、および監査仮想サーバーにバインドする必要があります。
また、次の手順を実行する必要があります。
-
ポート 49443 を持つ追加のコンテキストスイッチング仮想サーバを設定し、このコンテキストスイッチング仮想サーバが、前に作成したすべてのポートに対して開いている同じ負荷分散仮想サーバをポイントする必要があります。
-
認証するには、NetScalerアプライアンスでポート49443を開く必要があります。
-
コンテキストスイッチングポリシーは、先に作成したポート 443 が開いているのと同じ負荷分散仮想サーバにバインドする必要があります。
-
前に作成したものと同じ SSL サービスを、負荷分散仮想サーバーにバインドする必要があります。
-
バックエンドの SSL プロファイルを既に作成している場合は、そのプロファイルを使用する必要があります。
コマンドプロンプトで次を入力します:
bind ssl vserver <name> -certkeyName <string>
bind ssl vserver <vServerName> -certkeyName <string>
add authentication Policy <policy name> -rule <expression> -action <action name>
bind authentication vserver <name> -policy <name of the policy> -priority <integer>
例:
bind ssl vserver lb_adfs_proxy -certkeyName aaa_local
set ssl profile ns_default_ssl_profile_frontend -eRSA ENABLED -sessReuse ENABLED -denySSLReneg NONSECURE
bind ssl vserver cs_adfs_proxy -certkeyName aaa_local
add authentication Policy local_pol -rule true -action LOCAL
bind authentication vserver avs_adfs_proxy -policy local_pol -priority 1
NetScalerアプライアンスでのクライアント証明書の構成については、「 高度なポリシーを使用したクライアント証明書認証の構成」を参照してください。 ```