OAuth IdPとしてのNetScaler ADC
NetScaler ADCをOAuth IdPとして持つ利点
-
ユーザーが組織全体で 1 つの ID を持つため、複数の認証パスワードを維持するオーバーヘッドを排除します。
-
パスワードは ID プロバイダでのみ共有され、アクセスするアプリケーションとは共有されないため、パスワードの堅牢なセキュリティを提供します。
-
さまざまなシステムとの広範な相互運用性を提供し、ホストされているアプリケーションがOpenIDを受け入れることを容易にします。
GUIを使用してNetScaler をOAuth IdPとして構成するには
-
認証 OAuth IdP ポリシーを作成します。
-
「 ポリシー」で、「 追加」をクリックします。
-
「認証 OAuth IDP ポリシーの作成」ページで、次のパラメータの値を設定し、「作成」をクリックします。
-
名前:認証ポリシーの名前。
-
アクション:このポリシーに一致するリクエストまたは接続に適用する認証 OAuth IdP プロファイルの名前。詳細な手順については、ステップ 2 を参照してください。
-
ログアクション:リクエストがこのポリシーに一致する場合に使用するメッセージログアクションの名前。詳細な手順については、ステップ 3 を参照してください。この情報は入力しなくても構いません。
-
未定義の結果アクション:ポリシー評価の結果が未定義の場合に実行するアクション。未定義のイベントは内部エラー状態を示します。使用可能なアクションは DROP と RESET です。この情報は入力しなくても構いません。
-
式:ポリシーが特定の要求に応答するために使用する高度な表現。ポリシーと式の詳細については、「 ポリシーと式」を参照してください。
-
-
認証 OAuth IdP アクションを作成します。
-
「認証 OAuth IDP ポリシーの作成」ページで、「アクション」フィールドの「追加」をクリックします。
-
-
名前:新しい OAuth IdP シングルサインオンプロファイルの名前。
-
クライアント ID: 認証を要求している依存パーティの固有の ID。最大許容長は 127 文字です。
-
クライアントシークレット:認証サーバーで依存パーティを承認するためのユニークなシークレット文字列。最大許容長は 239 文字です。
-
リダイレクト URL: OAuth トークンの送信先となる依存パーティ URL エンドポイント。最大許容長は 255 文字です。
-
発行者名:NetScalerからIdPに送信されるリクエストでNetScalerを一意に識別するために使用される名前。最大許容長は 127 文字です。
-
対象者:IdP が送信するトークンのターゲット受信者。これは受信者を表すエンティティ名または URL です。最大許容長は 127 文字です。
-
スキュー時間:このオプションは、NetScaler IdPによって送信されたトークンの有効期間を指定します。たとえば、スキュー時間が 10 分に設定されている場合、トークンは (現在の時間から 10 を引いたもの) 分から (現在の時間に 10 を加えたもの) 分まで、合計で 20 分の間有効です。デフォルトの所要時間は 5 分です。
-
デフォルト認証グループ:セッションの内部グループリストに追加されたグループ。これは、管理者が nFactor フロー内の依存パーティの設定を決定するのに役立ちます。認証ポリシーの式
AAA.USER.IS_MEMBER_OF("group name")に使用して、依存パーティ関連の nFactor フローを識別できます。最大許容長は 63 文字です。 -
依存パーティメタデータURL: NetScaler IdPが構成中の依存パーティに関する詳細を取得できるエンドポイント。メタデータレスポンスには、パーティの公開鍵に依存する
jwks_uriのエンドポイントが含まれている必要があります。最大許容長は 255 文字です。 -
更新間隔:依存パーティのメタデータが更新される間隔。
-
署名サービス:NetScaler IdPがトークンを送信するときにトークンを暗号化するには、このオプションを選択します。
-
属性:ID トークンに挿入される属性の名前と値のペア。設定形式は
name=value_expr@@@name2=value2_expr@@@です。この@@@形式は、名前と値のペアの間の区切り文字として使用されます。 -
パスワードを送信:ID トークンで暗号化されたパスワードを送信するには、このオプションを選択します。
-
-
-
監査メッセージアクションを作成します。
-
「 認証 OAuth IDP ポリシーの作成 」ページで、「 ログアクション 」フィールドの「 追加 」をクリックします。
-
「 監査メッセージアクションの作成 」ページで、次のパラメータの値を設定し、「 作成」をクリックします。
-
名前:監査メッセージアクションの名前。
-
ログレベル:生成されるログメッセージの重要度レベルを指定する監査ログレベル。
-
式:ログメッセージの形式と内容を定義するデフォルトの構文式。
-
newnslog にログイン:メッセージを新しい NSLOG サーバーに送信します。
-
-
-
認証 OAuth サーバーを作成します。
-
「認証 OAuth サーバーの作成」ページで、必要なパラメーターの値を設定し、「作成」をクリックします。
-
OAuth IdP ポリシーを認証 OAuth サーバーにバインドします。
-
PKCE(コード交換のための証明キー)のサポート
-
client_assertion のサポート
CLIを使用してOIDCプロトコルを使用してNetScalerをIdPとして構成するには
add authentication OAuthIDPProfile <name> [-clientID <string>][-clientSecret ][-redirectURL <URL>][-issuer <string>][-audience <string>][-skewTime <mins>] [-defaultAuthenticationGroup <string>]
add authentication OAuthIdPPolicy <name> -rule <expression> [-action <string>] [-undefAction <string>] [-comment <string>][-logAction <string>]
add authentication ldapAction aaa-ldap-act -serverIP 10.0.0.10 -ldapBase "dc=aaa,dc=local"
ldapBindDn <administrator@aaa.local> -ldapBindDnPassword <password> -ldapLoginName sAMAccountName
add authentication policy aaa-ldap-adv-pol -rule true -action aaa-ldap-act
bind authentication vserver auth_vs -policy <ldap_policy_name> -priority 100 -gotoPriorityExpression NEXT
bind authentication vserver auth_vs -policy <OAuthIDPPolicyName> -priority 5 -gotoPriorityExpression END
bind vpn global –certkey <>
-
複数のキーをバインドできます。バインドされた証明書のパブリック部分は、
jwks\_uri query (https://gw/oauth/idp/certs)への応答として送信されます。 -
OAuth IdP イントロスペクティブエンドポイントは、プロパティ
active: trueをサポートします。 -
認証仮想サーバーが OAuth IdP として構成されている場合、既知の OAuth IdP 検出エンドポイント URL は
https://<netscaler-oauth-idp-fqdn>/oauth/idp/.well-known/openid-configurationである必要があります。 -
OAuth IdPとして構成されたNetScalerは、OAuth SPに送信される
.well-known-Endpoint応答に、client_secret_post、client_secret_jwt、private_key_jwtおよびclient_secret_basicトークンエンドポイントの認証方法を表示しません。
OIDC プロトコルでの暗号化されたトークンのサポート
CLI を使用して証明書利用者のエンドポイントを設定するには
set authentication OAuthIDPProfile <name> [-relyingPartyMetadataURL <URL>] [-refreshInterval <mins>] [-status < >]
-
RelyingPartyMetadataURL -NetScaler IdPが構成中の依存パーティに関する詳細を取得できるエンドポイント。メタデータ応答には、RP 公開キーの jwks_uri のエンドポイントを含める必要があります。
-
refreshInterval -証明書を分単位で更新するために、このエンドポイントをポーリングする必要があるレートを定義します。
-
status -ポーリング操作のステータスを反映します。NetScalerが公開鍵を正常に取得すると、ステータスは「完了」になります。
set authentication OAuthIDPProfile sample_profile -relyingPartyMetadataURL https://rp.customer.com/metadata -refreshInterval 50 -status < >
-
応答に「jwks_uri」がない場合、プロファイルのステータスは完了していません。
-
応答に「jwks_uri」が存在する場合、NetScalerはそのエンドポイントもポーリングして依存パーティの公開鍵を読み取ります。
OpenID コネクトでのカスタム属性のサポート
OpenID 証明書利用者は、ユーザープロファイルの作成や承認の決定を行うために、トークンに 1 つ以上のユーザー名またはユーザープリンシパル名 (UPN) を要求する場合があります。ほとんどの場合、ユーザーグループはユーザーに認可ポリシーを適用する必要があります。場合によっては、ユーザーアカウントのプロビジョニングに、姓や姓などの詳細が必要になることがあります。
CLI を使用して証明書利用者のエンドポイントを設定するには
set oauthidpprofile <name> -attributes <AAA-custom-attribute-pattern>
<AAA-custom-attribute-pattern>は 、次のように記述できます。
Attribute1=PI-Expression@@@attribute2=PI-Expression@@@
"q{myname=http.req.user.name@@@ssn="123456789"@@@jit="false"@@@groups=http.req.user.groups}" 式の最大値は 2000 バイトです。これには 4 つのカスタム属性 (myname、ssn、jit、グループ) が含まれています。各カスタム属性の最大値は 10000 バイトです。たとえば、グループ属性 (PI 式http.req.user.groupsに基づいて評価される) の OIDCid_Token には、最大 10000 バイトのデータを含めることができます。
set oauthidpprofile sample_1 -attributes "q{myname=http.req.user.name@@@ssn="123456789"@@@jit="false"@@@groups=http.req.user.groups}"
-
先行する PI 式は、属性に対して使用される値を表す高度なポリシー式です。PI 式は、「'ハードコードされた文字列'」などの文字列リテラルを送信するために使用できます。文字列リテラルは、一重引用符を二重引用符で囲み、開始パターンを二重引用符で囲みます (開始パターンは
"q()")。属性の値が文字列リテラルでない場合、式は実行時に評価され、その値はトークンで送信されます。実行時の値が空の場合、対応する属性は ID トークンに追加されません。 -
例で定義されているように、「false」は属性「jit」のリテラル文字列です。また、"
ssn" には参照用にハードコードされた値があります。グループと "myname" は文字列を生成する PI 式です。