SAMLサービスプロバイダーとしてのNetScaler
-
SAML トークンからユーザー情報 (属性) を抽出できます。その後、この情報をNetScalerアプライアンスで構成されたポリシーで使用できます。たとえば、GroupMember 属性とemailaddress 属性を抽出する場合 、SAMLAction でAttribute2 パラメーターを GroupMember として、Attribute3パラメーターを emailaddressとして指定します。注ユーザー名、パスワード、ログアウト URL などのデフォルト属性は、属性 1 ~ 16 で抽出しないでください。これらは暗黙的に解析され、セッションに保存されるためです。
-
受信 SAML アサーションから最大 127 バイトの属性名を抽出できます。以前の制限は 63 バイトでした。
-
ポスト、リダイレクト、アーティファクトバインディングをサポートします。注インフレートまたはデコード後のアサーションが 10K を超える場合は、大量のデータにリダイレクトバインディングを使用しないでください。
-
アサーションを復号化できます。
-
SAML アサーションから複数値の属性を抽出できます。これらの属性は、次のようなネストされた XML タグとして送信されます。\<AttributeValue\> \<AttributeValue\>Value1\</AttributeValue\> \<AttributeValue\>Value2\</AttributeValue\> \\</AttributeValue\\>注NetScaler 13.0ビルド63.x以降では、SAML属性の個々の最大長が最大4万バイトまで許可されるようになっています。すべての属性のサイズは 40K バイトを超えてはなりません。以前のXMLで表示される場合、NetScalerアプライアンスは、Value1のみを抽出する古いファームウェアとは対照的に、Value1とValue2の両方を特定の属性の値として抽出できます。
-
SAML アサーションの有効性を指定できます。NetScaler SAML IdPとピアSAML SPのシステム時刻が同期していない場合、メッセージはどちらかの当事者によって無効にされる可能性があります。このような状況を回避するために、アサーションが有効な期間を設定できるようになりました。この期間は「スキュー時間」と呼ばれ、メッセージを受け付けることができる分数を指定します。スキュータイムは SAML SP と SAML IdP で設定できます。
-
認証リクエストで「ForceAuth」という追加属性を外部 IdP (ID プロバイダー) に送信できます。デフォルトでは、ForceAuthn は「False」に設定されています。「True」に設定すると、既存の認証コンテキストに関係なくIdPに認証を強制するよう提案できます。また、NetScaler SPは、アーティファクトバインディングで構成されている場合、クエリパラメーターで認証要求を実行します。
CLIを使用してNetScalerアプライアンスをSAML SPとして構成する
-
SAML SP アクションを設定します。例次のコマンドは、認証されていないユーザー要求をリダイレクトする SAML アクションを追加します。
add authentication samlAction SamlSPAct1 -metadataUrl "https://ksidp1.ksaaa.local/metadata/samlidp/SAML_IDP_profile" -samlIdPCertName nssp -preferredbindtype SSOREDIRECT -samlSigningCertName nssp –samlRedirectUrl https://auth1.example.com -relaystateRule "AAA.LOGIN.RELAYSTATE.EQ(\"https://lb.example1.com/\")"注意事項-
SamLActionコマンドので
-samlIdPCertName提供される証明書は、シグニチャの検証を成功させるには、IdP の対応する証明書と一致する必要があります。 -
SAML は RSA 証明書のみをサポートします。HSM や FIPS などの他の証明書はサポートされていません。
-
式の末尾に「/」を付けた完全なドメイン名を使用することをお勧めします。
-
認証仮想サーバーが SAML IdP として構成されている場合、SAML SP アクションで使用する必要があるメタデータ URL は
https://<netscaler-saml-idp-fqdn>/metadata/samlidp/SAML_IDP_profileです。 -
複数の SAML ポリシーが IdP チェーンの一部である場合は、最初の SAML ポリシーにのみリレーステートルールを設定すれば十分です。
このコマンドの詳細については、「<https://developer-docs.netscaler.com/en-us/adc-command-reference-int/current-release/authentication/authentication-samlaction>」と「<https://support.citrix.com/article/CTX316577>」を参照してください 。 -
-
SAML ポリシーを設定します。例:次のコマンドは、以前に定義した SAML アクションをすべてのトラフィックに適用する SAML ポリシーを定義します。
add authentication policy SamlSPPol1 -rule true -action SamlSPAct1 -
SAML ポリシーを認証仮想サーバーにバインドします。例次のコマンドは、SAML ポリシーを「av_saml」という名前の認証仮想サーバーにバインドします。
bind authentication vserver av_saml -policy SamlSPPol1 -
認証仮想サーバーを適切なトラフィック管理仮想サーバーにバインドします。例次のコマンドは、「lb1_ssl」という名前の負荷分散仮想サーバーを追加し、「av_saml」という名前の認証仮想サーバーを負荷分散仮想サーバーに関連付けます。
add lb vserver lb1_ssl SSL 10.217.28.224 443 -persistenceType NONE -cltTimeout 180 -AuthenticationHost auth1.example.com -Authentication ON -authnVsName av_samlこのコマンドの詳細については、<https://developer-docs.citrix.com/projects/citrix-adc-command-reference/en/latest/authentication/authentication-samlAction>を参照してください 。
GUIを使用してNetScalerアプライアンスをSAML SPとして構成する
-
SAML SP アクションを設定します。
-
パラメータの説明:
-
名前-サーバーの名前。
-
リダイレクト URL-ユーザーが認証する URL。一部のIdPには、SAML設定でないとアクセスできない特別なURLがあります。
-
シングルログアウトURL-NetScalerがクライアントをIdPに送り返してサインアウトプロセスを完了するタイミングを認識できるように指定するURL。
-
SAML バインディング-SP と IdP の間で SAML リクエスタとレスポンダのメッセージを転送するために使用されるメカニズム。NetScalerがSPとして機能する場合、ポスト、リダイレクト、アーティファクトのバインディングがサポートされます。デフォルトのバインド方法は POST です。注:Artifact バインディングでは、SP と IdP のトランスポートメカニズムが同じである必要があります。
-
ログアウトバインディング-SAML ログアウトメッセージの転送メカニズムを指定します。デフォルトのバインドメカニズムは Post です。
-
IdP 証明書名-SAML 署名証明書の下にある IdP 証明書証明書 (Base64)。
-
SAML IDP メタデータ URL-SAML メタデータの取得に使用されます。メタデータ URL が存在する場合、IdP 証明書名とリダイレクト URL フィールドを指定する必要はありません。メタデータURLを構成すると、SAML IdPはSSOとログアウトのバインドタイプオプションをNetScalerに送信します。デフォルトでは、NetScalerはログアウトのバインドタイプとしてリダイレクトを選択し、SSOのバインドタイプとしてポストを選択します。以下は、バインディングタイプのオプションを含む SAML IdP レスポンスの例です:
<?xml version=\"1.0\"?> <md:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" ID=\"_b4743282f0a1e14164b8ccd429e8cee2\" entityID=\"192.0.2.255\"> <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP -Redirect\" Location=\"https://192.0.2.255 /cgi/tmlogout_redirect1\"></md:SingleLogoutService> <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://192.0.2.255 /cgi/tmlogout_post1\"></md:SingleLogoutService> <md:SingleSignOnServ ice Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://192.0.2.255 /saml/login_post1\"> </md:SingleSignOnService> <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://192.0.2.255 /saml/login_redirect1\"> </md:SingleSignOnService> </md:EntityDescriptor>優先バインドタイプパラメータを設定することで、SSO とログアウトのデフォルトのバインドタイプを変更できます 。 -
優先バインドタイプ-SSO とログアウトの優先バインドタイプを指定します。このオプションは、リリース13.1ビルド54.x以降で使用できます。前のSAML IdPレスポンスでは、SSOの場合、NetScalerはSAMLバインディングとしてPostを選択し、デフォルトで
https://192.0.2.255/saml/login_post1を選択します。この動作は、SSOREDIRECTチェックボックスを優先バインドタイプとして選択することで変更できます。前のSAML IdPレスポンスでは、NetScalerはログアウトのバインドタイプとしてリダイレクトを選択し、デフォルトでhttps://192.0.2.255/cgi/tmlogout_redirect1を選択します。この動作は、LOGOUTPOSTチェックボックスを優先バインドタイプとして選択することで変更できます。好みに応じて、どちらか一方または両方のバインドタイプを設定できます。 -
メタデータの更新間隔 (分)-指定されたメタデータ URL からメタデータを取得する間隔 (分)。
-
ユーザーフィールド- 必要に応じてSPが抽出するユーザー名を含むIdPのSAML認証フォームのセクション。
-
署名証明書名-NetScalerがIdPへの認証リクエストに署名するために使用するSAML SP証明書(秘密鍵付き)を選択します。IdP が認証要求署名を検証できるように、同じ証明書(秘密キーなし)を IdP にインポートする必要があります。ほとんどの IdP は署名証明書名を必要としません。
-
issuerName -識別子。SP と IdP の両方で指定される固有の ID で、サービスプロバイダーを相互に識別しやすくなります。
-
署名されていないアサーションを拒否-IdP からのアサーションに署名が必要な場合に指定できるオプション。デフォルトのオプションは [オン] です。
-
ON: 署名のないアサーションを拒否します
-
STRICT: レスポンスとアサーションの両方が署名されていることを確認します
-
OFF: 署名なしのアサーションを許可します
-
-
Audience-IdP によって送信されたアサーションが適用可能なオーディエンス。これは通常、サービスプロバイダーを表すエンティティ名または URL です。
-
署名アルゴリズム-SAML トランザクションの署名/検証に使用されるアルゴリズム。デフォルト値は RSA-SHA256 です。
-
ダイジェスト方式-SAML トランザクションのダイジェストの計算/検証に使用されるアルゴリズム。デフォルト値は SHA256 です。
-
リレーステートルール-このパラメータの詳細については、「
relaystateRuleパラメータに関する注意点 」を参照してください。 -
状態チェックルール-SAML エンドポイントの HTTP リクエストを検証するために評価される式を設定します。
-
デフォルト認証グループ-抽出されたグループに加えて、認証が成功した場合に選択されるデフォルトグループ。
-
Group Name Field:ユーザグループを含むアサーション内のタグの名前。
-
スキュー時間(分)-このオプションでは、NetScalerサービスプロバイダーが受信アサーションで許容するクロックスキューを分単位で指定します。たとえば、16:00 にスキュー時間を 10 分に設定した場合、SAML アサーションは 15:50 から 16:10(合計 20 分)まで有効です。デフォルトのスキュー時間は 5 分です。
-
2 要素-SAML 後の第 2 要素認証を有効にします。
-
アサーションコンシューマサービスインデックス-この設定に対応するメタデータエントリのインデックス/ID。
-
属性消費サービスインデックス-IdPでの属性仕様のインデックス/ID。IdP は、このインデックスを使用して SP によって要求された属性を検索し、それらの属性を SAML アサーションで送信します。
-
リクエストされた認証コンテキスト- 応答で返される認証ステートメントのコンテキスト要件を指定します。
-
認証クラスタイプ-IdP から要求される認証クラスタイプを指定します。
-
カスタム認証クラスタイプ-SP から SAML IdP に送信される認証リクエストの一部として送信されるカスタム認証クラス参照を指定します。
-
サムプリントを送信-SAML リクエストの証明書の代わりにサムプリントを送信します。
-
ユーザー名を強制-2 要素認証の実行中に、SAML アサーションから抽出されたユーザー名をログインページで編集できるかどうかを選択します。
-
強制認証-NetScalerからリクエストを受信したIdPで認証を強制します。
-
SAML レスポンスを保存-ユーザーセッションがアクティブな限り、SAML レスポンス全体を保存します。
-
-
対応する SAML ポリシーを作成します。「 認証 SAML ポリシーの作成 」ページで、次の詳細を入力します。
-
名前-SAML ポリシーの名前を指定します。
-
アクションタイプ-認証アクションタイプとして SAML を選択します。
-
アクション-SAML ポリシーをバインドする SAML サーバープロファイルを選択します。
-
表現-ユーザーが SAML サーバーで認証する必要があるかどうかを判断するために SAML ポリシーが使用するルールまたは式の名前を表示します。テキストボックスに「rule = true」という値を設定すると、SAML ポリシーが有効になり、対応する SAML アクションが実行されます。
-
-
SAML ポリシーを認証仮想サーバーにバインドします。
-
認証サーバーを適切なトラフィック管理仮想サーバーに関連付けます。
relaystateRule パラメータに関する注意点
samlAction コマンドの RelaysStateRule パラメーターの式を設定します。式には、認証リダイレクトの前に、単一の公開ドメイン、またはユーザーが接続したい公開ドメインのリストを含める必要があります。たとえば、式には、認証に SAML アクションを使用するフロントエンド仮想サーバー (VPN、負荷分散、またはコンテンツスイッチング) のドメインが含まれている必要があります。
/) が付いた完全なドメイン名を使用することをお勧めします。例: https://example.com/。
set samlAction <samlActionName> -relaystateRule "AAA.LOGIN.RELAYSTATE.EQ(\"https://example1.com/\")"
add patset test1
bind patset test1 "https://example1.com/"
bind patset test1 "https://test1.com/"
bind patset test1 "https://10.11.11.112/"
set samlAction <samlActionName> -relaystateRule AAA.LOGIN.RELAYSTATE.CONTAINS_ANY("test1")
set samlaction <samlActionName> -relaystateRule "AAA.LOGIN.RELAYSTATE.REGEX_MATCH(re#^https://[a-zA-Z0-9]*.example1.com/#)"
\^https) を指定し、式の最後にフォワードスラッシュ「/」を指定します (例: example1\.com/)。
RelayStateRule エクスプレッションの定義の一部を次に示します:
EQ: Exact match.
CONTAINS: Domain inclusion.
CONTAINS_ANY: Match any domain from a PATSET.
REGEX_MATCH: Regex-based matching.