Edge Management API ile SAML kullanma

Edge for Private Cloud v. 4.17.09

Temel Kimlik Doğrulama, Edge Management API'ye çağrı yaparken kimlik doğrulaması yapmanın bir yoludur. Örneğin, kuruluşunuzla ilgili bilgilere erişmek için Edge Management API'ye şu cURL isteğini gönderebilirsiniz:

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

Bu örnekte, Temel Kimlik Doğrulama kimlik bilgilerini iletmek için cURL -u seçeneğini kullanırsınız. Alternatif olarak, Edge Management API çağrıları yapmak için Bearer başlığında bir OAuth2 jetonu aktarabilirsiniz. Örneğin:

curl -H "Authorization: Bearer <access_token>" https://ms_IP_DNS:8080/v1/organizations/orgName

SAML'yi etkinleştirdikten sonra isteğe bağlı olarak Temel Kimlik Doğrulama'yı devre dışı bırakabilirsiniz. Temel Kimlik Doğrulama'yı devre dışı bırakırsanız Temel Kimlik Doğrulama'yı destekleyen Edge Management API çağrılarını kullanan tüm komut dosyaları (Maven komut dosyaları, kabuk komut dosyaları, apigeetool vb.) artık çalışmaz. Taşıyıcı üstbilgisindeki OAuth2 erişim jetonlarını geçirmek için Temel Kimlik Doğrulama kullanan tüm API çağrılarını ve komut dosyalarını güncellemeniz gerekir.

Jetonları almak ve yenilemek için get_token parametresini kullanma

get_token yardımcı programı, Temel Kimlik Doğrulama kimlik bilgilerinizle bir şifre kodunu kullanarak OAuth2 erişimi ve yenileme jetonu değiştirir. get_token yardımcı programı, kimlik bilgilerinizi kabul eder ve geçerli bir erişim jetonu yazdırır. Yenilenebilen jetonlar yenilenir ve yazdırılır. Yenileme jetonunun süresi dolarsa kullanıcı kimlik bilgileri istenir.

get_token yardımcı programı jetonları diskte depolar ve gerektiğinde kullanıma hazır hale getirir. Ayrıca stdout'a geçerli bir erişim jetonu da yazdırır. Buradan Postman'ı kullanabilir veya curl'de kullanmak için bir ortam değişkenine yerleştirebilirsiniz.

Aşağıdaki prosedürde, Edge Management API çağrıları yapmak amacıyla OAuth2 erişim jetonu almak için get_token hizmetinin nasıl kullanılacağı açıklanmaktadır:

  1. sso-cli paketini indirin:
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    Burada edge_sso_IP_DNS, Edge TOA modülünü barındıran makinenin DNS adının IP adresidir. Edge TOA'da TLS'yi yapılandırdıysanız https özelliğini ve doğru TLS bağlantı noktası numarasını kullanın.

  2. ssocli-bundle.zip paketinin sıkıştırmasını açın:
    unzip ssocli-bundle.zip
  3. /usr/local/bin içinde get_token eklentisini yükleme:
    ./install

    Farklı bir konum belirtmek için -b seçeneğini kullanın:

    ./install -b path
  4. SSO_LOGIN_URL ortam değişkenini şu biçimde giriş URL'nize ayarlayın:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    Burada edge_sso_IP_DNS, Edge TOA modülünü barındıran makinenin DNS adının IP adresidir. Edge TOA'da TLS'yi yapılandırdıysanız https özelliğini ve doğru TLS bağlantı noktası numarasını kullanın.

  5. Tarayıcıda, tek kullanımlık şifre kodunu almak için aşağıdaki URL'ye gidin:
    http://edge_sso_IP_DNS:9099/passcode

    Edge TOA'da TLS'yi yapılandırdıysanız https değerini ve doğru TLS bağlantı noktası numarasını kullanın.

    Bu URL, yeni bir şifre kodu almak için URL'yi yenileyene veya erişim jetonu oluşturmak için get_token ile şifre kodu kullanana kadar geçerli olan tek seferlik bir şifre kodu döndürür.

  6. OAuth2 erişim jetonunu almak için get_token komutunu çağırın:
    get_token -u emailAddress

    Burada emailAddress, Edge kullanıcısının e-posta adresidir. 3. adımda aldığınız tek kullanımlık şifre kodunu girmeniz istenir:

    One Time Code ( Get one at https://edge_sso_IP.com/passcode )
          Enter the passcode if SAML is enabled or press ENTER:

    Şifre kodunu girin. get_token yardımcı programı OAuth2 erişim jetonunu alır, ekrana yazdırır, jetonla birlikte yenileme jetonunu ~/.sso-cli adresine yazar.

    Şifre kodunu, get_token komutunu kullanarak komut satırına şu biçimde girebilirsiniz:

    get_token -u emailAddress -p passcode

  7. Erişim jetonunu bir Edge Management API çağrısına Bearer başlığı olarak iletin:
    curl -H "Authorization: Bearer access_token"
    https://ms_IP:8080/v1/organizations/orgName

    İlk kez yeni bir erişim jetonu aldıktan sonra, erişim jetonunu aşağıda gösterildiği gibi tek bir komutla bir API çağrısına aktarabilirsiniz:

    header=`get_token` &&
    curl -H "Authorization: Bearer $header"
    https://ms_IP:8080/v1/o/orgName

    Bu komut biçimiyle, erişim jetonunun süresi dolduysa yenileme jetonunun süresi dolana kadar otomatik olarak yenilenir.

Yenileme jetonunun süresi dolduktan sonra get_token, yeni bir şifre kodu girmenizi ister. Yeni bir OAuth erişim jetonu oluşturabilmek için yukarıdaki 3. adımda gösterilen URL'ye gidip yeni bir şifre kodu oluşturmanız gerekir.

Jetonları almak ve yenilemek için Management API'yi kullanma

Apigee Edge management API ile OAuth2 güvenliğini kullanma başlıklı makalede, jeton almak ve yenilemek için Edge Management API'nin nasıl kullanılacağını gösteren talimatlar bulunmaktadır. SAML onaylarından oluşturulan jetonlar için Edge API çağrılarını da kullanabilirsiniz.

Apigee Edge Management API ile OAuth2 güvenliğini kullanma bölümünde belirtilen API çağrıları arasındaki tek fark, çağrı URL'sinin alt bölge adınıza referans vermesi gerektiğidir. Ayrıca, ilk erişim jetonunu oluşturmak için yukarıdaki prosedürün 3. adımında gösterildiği gibi şifre kodunu eklemeniz gerekir.

Örneğin, ilk erişim ve yenileme jetonlarını oluşturmak için aşağıdaki API çağrısını kullanın:

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" /
  -H "accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token&passcode=passcode'

Yetkilendirme için Authorization üst bilgisinde ayrılmış bir OAuth2 istemci kimlik bilgisi iletin. Çağrı, erişim ve yenileme jetonlarını ekrana yazdırır.

Erişim jetonunu daha sonra yenilemek için yenileme jetonunu içeren aşağıdaki çağrıyı kullanın:

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" /
  -H "Accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token /
  -d 'grant_type=refresh_token&refresh_token=refreshToken'