このセクションでは、アプリケーションを 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 ユーザー インターフェイスを使用した構成

次の手順を使用して認証プロファイルを構成します。

  1. [テンプレート] > [セキュリティ] > [認証プロファイル] の順に移動します。

  2. [作成] をクリックします。

  3. 認証プロファイルの [名前] を入力します。

  4. 認証プロファイルの [タイプ] として [SAML] を選択します。

  5. IdP からの [IDP メタデータ] を入力します。

  6. [SAML サービス プロバイダの設定] にある [エンティティ タイプ] オプションで、[ユーザー提供のエンティティ ID を使用] を選択します。



  7. [保存] をクリックします。

次の手順を使用して SSO ポリシーを作成します。

  1. [テンプレート] > [セキュリティ] > [SSO ポリシー] > [作成] の順に移動します。

  2. SSO ポリシーの [名前] を入力します。

  3. SSO ポリシーの [タイプ] として [SAML] を選択します。

  4. [デフォルトの認証プロファイル] で、作成された SAML 認証プロファイルを選択します。



  5. [保存] をクリックします。

次の手順を使用して、SSO ポリシーを仮想サービスにバインドします。

  1. [アプリケーション] > [仮想サービス] の順に移動します。

  2. 仮想サービスの編集アイコンをクリックして、[仮想サービスの編集] 画面を開きます。または、新しい仮想サービスの作成モードでこの構成を行うことができます。

  3. [ポリシー] タブで、[アクセス] を選択します。

  4. 作成した [SSO ポリシー] を選択します。

  5. [エンティティ ID] として一意の値を入力します。この値が IdP と SP で同じであることを確認します。

  6. [SSO URL] として https://SPresource/sso/acs/ と入力します。IdP でも同じ URL が使用されていることを確認します。例:https://sales.avi.com/sso/acs/

    注:

    acs の後のスラッシュは必須です。

  7. [セッション Cookie 名] フィールドに、認証済みセッションの HTTP Cookie 名を入力します。NSX Advanced Load Balancer がアサーションを検証し、クライアントの Cookie を設定します。クライアントは、SP が提供した Cookie を使用してリソースにアクセスするための GET 要求を送信します。Cookie 名は構成可能で、このフィールドで指定できます。名前が指定されていない場合、NSX Advanced Load Balancer VS は Cookie にランダムに生成される名前(XRWDFG など)を使用します。

  8. Cookie の有効期限をカスタマイズするには、[セッション Cookie のタイムアウト] を分単位で入力します。デフォルト値は 60 分です。

  9. [SSL キー] フィールドで、SSL 証明書を選択するか、作成します。この SSL 証明書は、IdP に送信される要求に署名し、IdP からのアサーションを復号するために使用されます。

  10. [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 であることを意味し、それ以降も同様です



  11. [保存] をクリックします。

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