OAuth認証
認証、承認、および監査トラフィック管理機能は、OAuth および OpenID Connect (OIDC) 認証をサポートします。Google、Facebook、Twitter などのアプリケーションでホストされているサービスに対するユーザーの承認と認証を行います。
注意事項
- このソリューションが機能するには、NetScaler Advanced Edition以上が必要です。
- アプライアンスがOIDCを使用してOAuth IdPとして機能するには、NetScalerアプライアンスがバージョン12.1以降である必要があります。
- Citrix ADCアプライアンス上のOAuthは、「OpenID Connect 2.0」に準拠しているすべてのSAML IdPに対して認定されます。
NetScalerアプライアンスは、SAMLとOIDCを使用して、サービスプロバイダー(SP)またはアイデンティティプロバイダー(IdP)として動作するように構成できます。以前は、IdPとして構成されたNetScalerアプライアンスはSAMLプロトコルのみをサポートしていました。NetScaler 12.1バージョン以降、NetScalerはOIDCもサポートしています。
OIDC は OAuth の承認/委任を拡張したものです。NetScalerアプライアンスは、同じクラスの他の認証メカニズムでOAuthプロトコルとOIDCプロトコルをサポートします。OIDC は OAuth のアドオンであり、ユーザー情報を収集できないトークンのみを取得する OAuth とは対照的に、認可サーバーからユーザー情報を取得する方法を提供します。
認証メカニズムは、OpenID トークンのインライン検証を容易にします。NetScalerアプライアンスは、証明書を取得してトークンの署名を検証するように構成できます。
OAuth および OIDC メカニズムを使用する主な利点は、ユーザー情報がホストされるアプリケーションに送信されないことです。したがって、個人情報の盗難のリスクは大幅に減少します。
認証、承認、監査用に構成されたNetScalerアプライアンスは、HMAC HS256アルゴリズムを使用して署名された受信トークンを受け入れるようになりました。さらに、SAML アイデンティティプロバイダ (IdP) の公開キーは、URL エンドポイントから学習するのではなく、ファイルから読み取られます。
NetScalerの実装では、アプリケーションには認証、承認、監査のトラフィック管理仮想サーバーからアクセスされます。したがって、OAuth を設定するには、認証、承認、および監査トラフィック管理仮想サーバに関連付ける OAuth ポリシーを設定する必要があります。
OpenID 接続プロトコルの設定
NetScalerアプライアンスは、OIDCプロトコルを使用してIDプロバイダーとして構成できるようになりました。OIDCプロトコルは、Citrix ADCアプライアンスのアイデンティティ提供機能を強化します。シングルサインオンで、エンタープライズ全体でホストされているアプリケーションにアクセスできるようになりました。OIDCは、ユーザーのパスワードを転送しないで、特定の有効期間を持つトークンで動作することにより、セキュリティを強化します。また、OIDC は、アプリやサービスなどのブラウザ以外のクライアントと統合するように設計されています。そのため、多くの実装ではOIDCを広く採用している。
OpenID コネクトをサポートすることの利点
- OIDC は、ユーザーが組織全体で単一の ID を持つため、複数の認証パスワードを維持するオーバーヘッドを排除します。
- OIDC は、パスワードがユーザーの ID プロバイダーとのみ共有され、アクセスするアプリケーションとは共有されないため、パスワードに堅牢なセキュリティを提供します。
- OIDC はさまざまなシステムとの相互運用性が非常に高いため、ホストされるアプリケーションが OpenID を受け入れやすくなります。
- OIDC は、ネイティブクライアントがサーバーと簡単に統合できるようにするシンプルなプロトコルです。
GUIを使用してOpenID Connectプロトコルを使用してNetScalerアプライアンスをIdPとして構成するには
-
[ 構成] > [セキュリティ] > [AAA アプリケーショントラフィック] > [ポリシー] > [認証] > [高度なポリシー] > [OAuth IdP]に移動します。
-
[ プロファイル ] をクリックし、[ 追加] をクリックします。
[ 認証 OAuth IDP プロファイルの作成 ] 画面で、次のパラメータの値を設定し、[ 作成] をクリックします。
- Name :認証プロファイルの名前。
- クライアント ID :SP を識別する一意の文字列。
- クライアントシークレット :SP を識別する一意のシークレット。
- リダイレクト URL — コード/トークンのポスト先となる SP 上のエンドポイント。
- 発行者名 — IdP を識別する文字列。
- オーディエンス — IdP によって送信されるトークンのターゲット受信者。これは受信者がチェックするかもしれません。
- スキュー時間 — トークンが有効である時間。
- [Default Authentication Group]:ポリシーの評価を簡素化し、 ポリシーのカスタマイズを支援するために、このプロファイルのセッションに追加されるグループ。
-
[ポリシー] をクリックし、[追加] をクリックします。
-
[ 認証 OAuth IDP ポリシーの作成 ] 画面で、次のパラメータの値を設定し、[ 作成] をクリックします。
- 名前 — 認証ポリシーの名前。
- Action — 以前に作成されたプロファイルの名前。
- [Log Action ]:要求がこのポリシーに一致したときに使用するメッセージログアクションの名前。必須の提出ではありません。
- Undefined-Resultアクション :ポリシー評価の結果が未定義(UNDEF)である場合に実行するアクション。必須フィールドではありません。
- 表現 — ポリシーが特定のリクエストに応答するために使用する高度なポリシー表現。例:true。
- Comments - ポリシーに関するコメント。
OAuthIdP ポリシーと LDAP ポリシーを認証仮想サーバーにバインドする
-
設定 > セキュリティ > AAA アプリケーショントラフィック > ポリシー > 認証 > 詳細ポリシー > アクション > LDAPに移動します。
-
[ LDAP アクション ] 画面で、[ 追加] をクリックします。
-
[ 認証 LDAP サーバの作成 ] 画面で、次のパラメータの値を設定し、[ 作成] をクリックします。
- Name — LDAP アクションの名前
- サーバ名/サーバ IP — LDAP サーバの FQDN または IP を指定します。
- [ セキュリティタイプ]、[ポート]、[サーバータイプ]、[タイムアウト] の適切な値を選択する
- [ 認証] がオンになっていることを確認します
- ベース DN: LDAP 検索を開始する基本。例えば、dc=aaa、dc=local。
- 管理者バインド DN: LDAP サーバーへのバインドのユーザー名。たとえば、admin@aaa.local。
- 管理者パスワード/パスワードの確認:LDAP をバインドするためのパスワード
- [ 接続のテスト ] をクリックして、設定をテストします。
- サーバーログオン名属性:「samAccountName」を選択します。
- その他のフィールドは必須ではないため、必要に応じて設定できます。
-
設定 > セキュリティ > AAA アプリケーショントラフィック > ポリシー > 認証 > 詳細ポリシー > ポリシーにナビゲートして下さい。
-
[ 認証ポリシー ] 画面で、[ 追加] をクリックします。
-
[ 認証ポリシーの作成 ] ページで、次のパラメータの値を設定し、[ 作成] をクリックします。
- Name — LDAP 認証ポリシーの名前。
- [アクションタイプ] — [ LDAP] を選択します。
- [アクション] — LDAP アクションを選択します。
- 表現 — ポリシーが特定のリクエストに応答するために使用する高度なポリシー表現。例:true**。
CLIを使用してOpenID Connectプロトコルを使用してNetScalerアプライアンスをIdPとして構成するには
コマンドプロンプトで、次のコマンドを入力します。
add authentication OAuthIDPProfile <name> [-clientID <string>][-clientSecret ][-redirectURL <URL>][-issuer <string>][-audience <string>][-skewTime <mins>] [-defaultAuthenticationGroup <string>]<!--NeedCopy-->
-
add authentication OAuthIdPPolicy <name> -rule <expression> [-action <string> [-undefAction <string>] [-comment <string>][-logAction <string>]<!--NeedCopy-->
-
add authentication ldapAction aaa-ldap-act -serverIP 10.0.0.10 -ldapBase "dc=aaa,dc=local"<!--NeedCopy-->
-
ldapBindDn <administrator@aaa.local> -ldapBindDnPassword <password> -ldapLoginName sAMAccountName<!--NeedCopy-->
-
add authentication policy aaa-ldap-adv-pol -rule true -action aaa-ldap-act<!--NeedCopy-->
-
bind authentication vserver auth_vs -policy <ldap_policy_name> -priority 100 -gotoPriorityExpression NEXT<!--NeedCopy-->
-
bind authentication vserver auth_vs -policy <OAuthIDPPolicyName> -priority 5 -gotoPriorityExpression END<!--NeedCopy-->
bind vpn global –certkey <><!--NeedCopy-->
注
複数のキーをバインドできます。バインドされた証明書のパブリック部分は、
jwks\_uri query (https://gw/oauth/idp/certs)
への応答として送信されます。