Edge Management API ile SAML kullanma

Edge for Private Cloud s. 4.17.09

Temel kimlik doğrulama, Edge yönetim API'sine çağrı yaparken kimlik doğrulamanın bir yoludur. Örneğin, kuruluşunuzla ilgili bilgilere erişmek için Edge yönetim API'sine aşağıdaki cURL isteğini gönderebilirsiniz:

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

Bu örnekte, Temel Yetkilendirme 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 üst bilgisinde bir OAuth2 jetonu iletebilirsiniz. Ö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 yönetim API çağrılarını kullanan tüm komut dosyaları (Maven komut dosyaları, kabuk komut dosyaları, apigeetool vb.) artık çalışmaz. OAuth2 erişim jetonlarını Bearer üst bilgisinde iletmek için Temel Kimlik Doğrulama kullanan tüm API çağrılarını ve komut dosyalarını güncellemeniz gerekir.

Jeton almak ve yenilemek için get_token işlevini kullanma

get_token yardımcı programı, temel kimlik doğrulama kimlik bilgilerinizi ve şifre kodunu OAuth2 erişim ve yenileme jetonuyla değiştirir. get_token yardımcı programı kimlik bilgilerinizi kabul eder ve geçerli bir erişim jetonu yazdırır. Yenilenebilecek bir jeton varsa jeton yenilenir ve yazdırılır. Yenileme jetonunun süresi dolarsa kullanıcı kimlik bilgileri istenir.

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

Aşağıdaki prosedürde, Edge yönetim API'si çağrıları yapmak için OAuth2 erişim jetonu almak üzere get_token'ün 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 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. get_token/usr/local/bin'a yükleyin:
    ./install

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

    ./install -b path
  4. SSO_LOGIN_URL ortam değişkenini, aşağıdaki 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 ve doğru TLS bağlantı noktası numarasını kullanın.

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

    TLS'yi Uç TOA'da 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 şifre kodunu get_token ile kullanana kadar geçerli olan tek kullanımlık bir şifre kodu döndürür.

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

    Burada emailAddress, Edge kullanıcısının e-posta adresidir. 3. adımda elde ettiğiniz 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 ve yenileme jetonuyla birlikte ~/.sso-cli dosyasına yazar.

    Şifre kodunu komut satırına şu şekilde bir get_token komutu kullanarak girebilirsiniz:

    get_token -u emailAddress -p passcode

  7. Erişim jetonunu, Edge yönetim API çağrısına Taşıyıcı üst bilgisi 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 alıp aşağıdaki gibi tek bir komutla bir API çağrısına iletebilirsiniz:

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

    Komutun bu biçiminde, erişim jetonunun süresi dolmuşsa yenileme jetonunun süresi dolana kadar otomatik olarak yenilenir.

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

Jeton almak ve yenilemek için yönetim API'sini kullanma

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

Apigee Edge yönetim API'si ile OAuth2 güvenliğini kullanma bölümünde açıklanan API çağrıları ile bu çağrılar arasındaki tek fark, çağrının URL'sinin bölge adınızı referans olarak kullanması gerektiğidir. Ayrıca, ilk erişim jetonunu oluşturmak için yukarıdaki işlemin 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 başlığında ayrılmış bir OAuth2 istemci kimliği gönderin. Görüşme, 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'