このセクションでは、アプリケーションを SAML ベースの認証用に構成する手順について説明します。このアプリケーションは、Okta や PingFederate などの IdP にリダイレクト URL などの詳細とともに登録する必要があります。これにより、SP(この場合は NSX Advanced Load Balancer 仮想サービス)で構成する必要がある IdP メタデータ XML ファイルが生成されます。
NSX Advanced Load Balancer では、自動認証の一部としてアサーション コンシューマ サービス (ACS) の URL とインデックスを IdP に送信できます。
次に示すように、SSO URL とエンティティ ID が IdP と SP で一致していることを確認します。
NSX Advanced Load Balancer ユーザー インターフェイスを使用した構成
次の手順を使用して認証プロファイルを構成します。
の順に移動します。
[作成] をクリックします。
認証プロファイルの [名前] を入力します。
認証プロファイルの [タイプ] として [SAML] を選択します。
IdP からの [IDP メタデータ] を入力します。
[SAML サービス プロバイダの設定] にある [エンティティ タイプ] オプションで、[ユーザー提供のエンティティ ID を使用] を選択します。
[保存] をクリックします。
次の手順を使用して SSO ポリシーを作成します。
の順に移動します。
SSO ポリシーの [名前] を入力します。
SSO ポリシーの [タイプ] として [SAML] を選択します。
[デフォルトの認証プロファイル] で、作成された SAML 認証プロファイルを選択します。
[保存] をクリックします。
次の手順を使用して、SSO ポリシーを仮想サービスにバインドします。
の順に移動します。
仮想サービスの編集アイコンをクリックして、[仮想サービスの編集] 画面を開きます。または、新しい仮想サービスの作成モードでこの構成を行うことができます。
[ポリシー] タブで、[アクセス] を選択します。
作成した [SSO ポリシー] を選択します。
[エンティティ ID] として一意の値を入力します。この値が IdP と SP で同じであることを確認します。
[SSO URL] として https://SPresource/sso/acs/ と入力します。IdP でも同じ URL が使用されていることを確認します。例:https://sales.avi.com/sso/acs/。
注:acs
の後のスラッシュは必須です。[セッション Cookie 名] フィールドに、認証済みセッションの HTTP Cookie 名を入力します。NSX Advanced Load Balancer がアサーションを検証し、クライアントの Cookie を設定します。クライアントは、SP が提供した Cookie を使用してリソースにアクセスするための
GET
要求を送信します。Cookie 名は構成可能で、このフィールドで指定できます。名前が指定されていない場合、NSX Advanced Load Balancer VS は Cookie にランダムに生成される名前(XRWDFG など)を使用します。Cookie の有効期限をカスタマイズするには、[セッション Cookie のタイムアウト] を分単位で入力します。デフォルト値は 60 分です。
[SSL キー] フィールドで、SSL 証明書を選択するか、作成します。この SSL 証明書は、IdP に送信される要求に署名し、IdP からのアサーションを復号するために使用されます。
[ACS タイプ] からオプションを選択します。これにより、NSX Advanced Load Balancer は認証要求の一部として [ACS URL]、[ACS インデックス]、または [なし] のいずれかを IdP に送信することができます。複数の ACS URL を構成できる一部の IdP では、IdP は ACS インデックスまたは ACS URL のいずれかを使用してサービス プロバイダを識別します。[ACS タイプ] の 3 つのオプションは次のとおりです。
None:これは、デフォルトの動作です。ACS タイプ が [なし] に設定されている場合、NSX Advanced Load Balancer は IdP への認証要求で ACS URL または ACS インデックスを送信しません。
URL:ACS URL は、IdP によって SAML 応答が SP (NSX Advanced Load Balancer) に返される必要がある場所を値で指定します。ACS URL が選択されている場合、NSX Advanced Load Balancer は IdP への認証要求の一部として ACS URL を送信します。次に、IdP は ACS URL を使用して SAML 応答を SP にポストバックします。
注:ACS URL の値は、上記で構成した SSO URL と同じです。
Index:ACS URL と同様に、ACS インデックスは SAML 応答を SP に返す必要がある場所を識別するために IdP によって使用されます。ACS インデックスが指定されている場合、NSX Advanced Load Balancer は認証要求の一部として ACS インデックスを送信します。ACS インデックスの範囲は 0 ~ 64 です。説明:
0 はインデックスが 0 であることを意味します
1 はインデックスが 1 であることを意味し、それ以降も同様です
[保存] をクリックします。
NSX Advanced Load Balancer CLI を使用した構成
次に示す CLI コマンドを使用して、認証プロファイルを構成します。
[admin:saml-ctrlr-1]: > configure authprofile Saml-auth-profile [admin:saml-ctrlr-1]: authprofile> type auth_profile_saml [admin:saml-ctrlr-1]: authprofile> saml [admin:saml-ctrlr-1]: authprofile:saml> sp [admin:saml-ctrlr-1]: authprofile:saml:sp> saml_entity_type auth_saml_app_vs [admin:saml-ctrlr-1]: authprofile:saml:sp> save [admin:saml-ctrlr-1]: authprofile:saml> save [admin:saml-ctrlr-1]: authprofile> saml [admin:saml-ctrlr-1]: authprofile:saml> new idp metadata : ‘metadata_string’
サンプル構成を次に示します。
metadata: ‘<?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="http://www.okta.com/exk2c02xxTcM9pIr0355"><md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><md:KeyDescriptor use="signing"><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:X509Data><ds:X509Certificate>MIIDtjCCAp6gAwIBAgIGAWPuJWSOMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYDVQQGEwJVUzETMBEG A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA1UECwwLU1NPUHJvdmlkZXIxHDAaBgNVBAMME2F2aW5ldHdvcmtzLWF1dGhsYWIxHDAaBgkq hkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMTgwNjExMDkxOTE4WhcNMjgwNjExMDkyMDE3WjCB mzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lz Y28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRwwGgYDVQQDDBNhdmluZXR3 b3Jrcy1hdXRobGFiMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAiFKBy70aa5G2I5JH+uUqXef9jrhUtx6CX1nmrg26FXtsKYdjRm5v otxbjfNdcXeXRXHu5scMwAgMy9EZM+AXehlm/qnahNWvEZ+YgPZS55UzkcSXJ30dl62kbUAyXxo3 CQQs+Hj5k7W0rcZAj405qxOZVgtkrs6cB3uS/pn02eV4EHA6ECReQLrEPFcy6zLZpIChbkzyz372 ZLbwMCSjF5DLh52MSGgWixwvs5Mq20WofBWMOnS0ofnZq6+TM6XK7P8VEQxJe37sWi0W+RrR6685 T+bnlM6GMg24wRHt/1fouUbZQuBgoc0/HNKywlO9BXLoJ9j02/VYn3Uex9bumQIDAQABMA0GCSqG SIb3DQEBCwUAA4IBAQAmAh0fXL7gU1ivV3hWdl0AlLPENREAzKbHwuthtTySBr6rmreo6j8SvOMW pKQzNznmzU3zyeLd96j6lfA7PIDGyBGmNB6z0Va0bPvOQe+a2f3/cmumVdrKFv7I5ZiR0UNbeBmG BIeWkJ+Rx+FcaIzP2IiFddmvpdh1nLae7FS9F1jvnioSIwq2PlFZuMMFb2TrMXrqqEMp9CeGfEag bjxQcWEW1ifNxeKrI/LcS5g5mTf4gx41bgo/w9x6MRsK+bIbYv680mdtb6LhWiT1lZU+ZAYJTKMr HHoIxYFPW8Zcs7DGirOOYMbSU97G0rljQzbv9gcS+FhwPffBaHi3spk9</ds:X509Certificate></ds:X509Data></ds:KeyInfo></md:KeyDescriptor><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://avinetworks-authlab.okta.com/app/avinetworksorg108212_apmssotest_1/exk2c02xxTcM9pIr0355/sso/saml"/><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://avinetworks-authlab.okta.com/app/avinetworksorg108212_apmssotest_1/exk2c02xxTcM9pIr0355/sso/saml"/></md:IDPSSODescriptor></md:EntityDescriptor>’
2 つの save コマンドを使用して CLI シーケンスを完了します。
[admin:saml-ctrlr-1]: authprofile:saml> save [admin:saml-ctrlr-1]: authprofile> save +----------------------+------------------------------------------------+ | Field | Value +----------------------+------------------------------------------------+ | uuid | authprofile-789ce4af-6b9d-4a73-bd26-d00f670a19c0 | | name | Saml-auth-profile | | type | AUTH_PROFILE_SAML | | saml | | | idp | | | metadata | <?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor xmlns:md="urn:oasis:n | | | ames:tc:SAML:2.0:metadata" entityID="http://www.okta.com/exk2c02xxTcM9pIr0355">< | | | md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration=" | | | urn:oasis:names:tc:SAML:2.0:protocol"><md:KeyDescriptor use="signing"><ds:KeyInf | | | o xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:X509Data><ds:X509Certificate | | | >MIIDtjCCAp6gAwIBAgIGAWPuJWSOMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYDVQQGEwJVUzETMBEG A1 | | | UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU MBIGA | | | 1UECwwLU1NPUHJvdmlkZXIxHDAaBgNVBAMME2F2aW5ldHdvcmtzLWF1dGhsYWIxHDAaBgkq hkiG9w0B | | | CQEWDWluZm9Ab2t0YS5jb20wHhcNMTgwNjExMDkxOTE4WhcNMjgwNjExMDkyMDE3WjCB mzELMAkGA1U | | | EBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lz Y28xDTALBgNVBA | | | oMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRwwGgYDVQQDDBNhdmluZXR3 b3Jrcy1hdXRobGFiM | | | RwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKC | | | AQEAiFKBy70aa5G2I5JH+uUqXef9jrhUtx6CX1nmrg26FXtsKYdjRm5v otxbjfNdcXeXRXHu5scMwAg | | | My9EZM+AXehlm/qnahNWvEZ+YgPZS55UzkcSXJ30dl62kbUAyXxo3 CQQs+Hj5k7W0rcZAj405qxOZVg | | | tkrs6cB3uS/pn02eV4EHA6ECReQLrEPFcy6zLZpIChbkzyz372 ZLbwMCSjF5DLh52MSGgWixwvs5Mq2 | | | 0WofBWMOnS0ofnZq6+TM6XK7P8VEQxJe37sWi0W+RrR6685 T+bnlM6GMg24wRHt/1fouUbZQuBgoc0/ | | | HNKywlO9BXLoJ9j02/VYn3Uex9bumQIDAQABMA0GCSqG SIb3DQEBCwUAA4IBAQAmAh0fXL7gU1ivV3h | | | Wdl0AlLPENREAzKbHwuthtTySBr6rmreo6j8SvOMW pKQzNznmzU3zyeLd96j6lfA7PIDGyBGmNB6z0V | | | a0bPvOQe+a2f3/cmumVdrKFv7I5ZiR0UNbeBmG BIeWkJ+Rx+FcaIzP2IiFddmvpdh1nLae7FS9F1jvn | | | ioSIwq2PlFZuMMFb2TrMXrqqEMp9CeGfEag bjxQcWEW1ifNxeKrI/LcS5g5mTf4gx41bgo/w9x6MRsK | | | +bIbYv680mdtb6LhWiT1lZU+ZAYJTKMr HHoIxYFPW8Zcs7DGirOOYMbSU97G0rljQzbv9gcS+FhwPff | | | BaHi3spk9</ds:X509Certificate></ds:X509Data></ds:KeyInfo></md:KeyDescriptor><md: | | | NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFor | | | mat><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md: | | | NameIDFormat><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindin | | | gs:HTTP-POST" Location="https://avinetworks-authlab.okta.com/app/avinetworksorg1 | | | 08212_apmssotest_1/exk2c02xxTcM9pIr0355/sso/saml"/><md:SingleSignOnService Bindi | | | ng="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://avinet | | | works-authlab.okta.com/app/avinetworksorg108212_apmssotest_1/exk2c02xxTcM9pIr035 | | | 5/sso/saml"/></md:IDPSSODescriptor></md:EntityDescriptor> | | sp | | | saml_entity_type | AUTH_SAML_APP_VS | | tenant_ref | admin | +----------------------+------------------------------------------------+ [admin:saml-ctrlr-1]: >
次のコードを使用して SSO ポリシーを構成します。
[admin:saml-ctrlr-1]: configure ssopolicy saml_ssopolicy [admin:saml-ctrlr-1]: ssopolicy> authentication_policy default_auth_profile_ref Saml-auth-profile [admin:saml-ctrlr-1]: ssopolicy:authentication_policy> save [admin:saml-ctrlr-1]: ssopolicy> save +----------------------------+------------------------------------------+ | Field | Value +----------------------------+------------------------------------------+ | uuid | ssopolicy-23bf7f51-d95a-4f1d-9dbb-648dd7ad11e6 | | name | saml_ssopolicy | authentication_policy | | default_auth_profile_ref | Saml-auth-profile | tenant_ref | admin +----------------------------+------------------------------------------+
次の手順を使用して、仮想サービスを構成します。
SSO ポリシーのバインド
[admin:saml-ctrlr-1]: > configure virtualservice VS-SAML Updating an existing object. Currently, the object is: < Object specifics would appear here. Left out of article for brevity's sake. > [admin:10-30-2-30]: virtualservice> sso_policy_ref saml_ssopolicy
SP の構成
[admin:saml-ctrlr-1]: virtualservice> saml_sp_config [admin:saml-ctrlr-1]: virtualservice:saml_sp_config> single_signon_url https://sales.avi.com/sso/acs/ [admin:saml-ctrlr-1]: virtualservice:saml_sp_config> entity_id SAML_app [admin:saml-ctrlr-1]: virtualservice:saml_sp_config> cookie_name MyCookie [admin:saml-ctrlr-1]: virtualservice:saml_sp_config> cookie_timeout 60 [admin:saml-ctrlr-1]: virtualservice:saml_sp_config> save [admin:saml-ctrlr-1]: virtualservice> save