LDAP politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne

LDAP Politikası şunları sağlar:

  • Kimlik doğrulama: İstekte sağlanan kullanıcı kimlik bilgileri, LDAP sağlayıcısındaki kimlik bilgileriyle doğrulanır. LDAP politikası, kimlik doğrulama konusunda size büyük esneklik sağlayarak istediğiniz DN değeri istekte bulunmasa bile şifreyle birlikte herhangi bir DN değerini kullanmanıza izin verir. Örneğin, kimlik doğrulama için e-posta / şifre kullanmanız gerektiğini varsayalım. Aşağıdaki seçenekler kullanılabilir:
    • İstekte e-posta varsa bu adresi LDAP kimlik doğrulaması şifresiyle birlikte kullanabilirsiniz.
    • İstekte e-posta yoksa ancak başka bir DN özelliği varsa (ör. telefon numarası) telefon numarasını LDAP'den ilgili e-postayı almak için kullanabilir, ardından kimlik doğrulamak için e-posta/şifre kullanabilirsiniz.
  • Ayırt edici ad (DN) araması: Kimlik doğrulamanın yanı sıra istekteki e-posta gibi bir kullanıcı özelliğini tanımlamak ve bu kullanıcı için LDAP'den diğer DN özelliklerini alan bir sorgu gerçekleştirmek için LDAP Politikası'nı da kullanabilirsiniz. Alınan DN, bir değişkende depolanır.

Korunan kaynaklara erişimin LDAP sağlayıcınızdaki kullanıcılarla (ör. yönetici kullanıcılarınız, kuruluş kullanıcılarınız ve geliştiriciler gibi) sınırlı olması gerektiğinde (özellikle de OAuth jetonu erişimi gereksiz veya çok ağır olduğunda) LDAP Politikasını kullanın. Politika, API proxy akışlarında kullanmak üzere alan adı meta verilerini almak için de tasarlanmıştır.

Örneğin, yalnızca LDAP'ye göre kullanıcının kimliği başarıyla doğrulandığında bir API çağrısının yürütülmesini ve kimlik doğrulama başarılı olduktan sonra isteğe bağlı olarak kullanıcının DN (Alan Adı) özelliklerini almasını sağlayabilirsiniz.

Daha fazla bilgi için aşağıdaki makalelere bakın:

Sana Özel

Kullanıcı adı/şifre kimlik doğrulaması

<Ldap name="4GLdapPolicy">
   <LdapResource>ldap1</LdapResource>
   <Authentication>
       <UserName ref="request.header.username"/>
       <Password ref="request.header.password"/>
       <Scope>subtree</Scope>
       <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com -->
    </Authentication>
 </Ldap>

Bu örnek, bir LDAP sağlayıcısına göre kimlik doğrulama sağlar. Politika, kimlik doğrulama için kullanıcı adını ve şifreyi istekten LDAP'ye iletir.

DN özelliği kimlik doğrulaması

<Ldap name="LdapPolicy">
   <LdapResource>ldap1</LdapResource>
   <Authentication>
       <Password ref="request.header.password"/>
       <SearchQuery>mail={request.header.mail}</SearchQuery>
       <Scope>subtree</Scope>
       <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com -->
    </Authentication>
 </Ldap>

Bu politika, istek başlığında e-posta ile birlikte kullanıcının DN'sini alır, ardından istek başlığında sağlanan şifreyi kullanarak kullanıcının kimliğini LDAP ile doğrular.

LDAP'yi Arama

<Ldap name="LdapPolicy">
    <!-- using a custom LDAP provider -->
    <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass>
    <LdapResource>MyLdap</LdapResource>
    <Search>
        <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com -->
        <SearchQuery>mail={request.header.mail}</SearchQuery>
        <Attributes>
            <Attribute>address</Attribute>
            <Attribute>phone</Attribute>
            <Attribute>title</Attribute>
        </Attributes>
        <Scope></Scope> <!-- default is ‘subtree’ -->
    </Search>
</Ldap>

Bu politika, özel bir LDAP sağlayıcısına referans verir. Bu işlev, kullanıcıyı tanımlamak için istek başlığındaki e-posta adresini kullanır, ardından kullanıcının adresini, telefonunu ve unvanını LDAP'den alır. Alınan DN özellikleri bir değişkende depolanır. "Politikaya özel değişkenler" konusuna bakın.

LDAP'de arama yapmak ve DN özelliklerini almak için istekte yönetici kimlik bilgileri bulunmalıdır.

Öğe referansı

Aşağıda, LDAP Politikası öğelerinin ve özelliklerinin açıklamaları verilmiştir.

Öğe

Açıklama

Ldap

Politika adını girebileceğiniz bir ad özelliğine sahip üst öğe.

LdapConnectorClass

LDAP Politikasını özel LDAP sağlayıcısıyla (Apigee tarafından sağlanmaz) kullanırken tam LDAP bağlayıcı sınıfını belirtin. Bu, Apigee'nin ExternalLdapConProvider arayüzünü uyguladığınız sınıftır.

LdapResource

LDAP kaynağının ortam adını girin. Daha fazla bilgi edinmek için LDAP kaynağı oluşturma başlıklı makaleye bakın.

BaseDN

Tüm verilerinizin altında yer aldığı temel LDAP düzeyi. Örneğin, Apigee'nin LDAP sağlayıcısında tüm veriler dc=apigee,dc=com kapsamındadır.

  • ref: Apigee.baseDN gibi BaseDN değerini içeren bir akış değişkeni belirtmek için kullanın. ref, açık bir BaseDN değerine göre önceliklidir. Hem referans hem de değer belirtirseniz referans önceliğine sahip olur. Referans çalışma zamanında çözümlenemezse değer kullanılır.

Scope

  • object: Kimlik doğrulama veya arama yalnızca LDAP'nin temel düzeyinde gerçekleştirilir.
  • onelevel: Kimlik doğrulama veya arama, temel düzeyin bir seviye altında gerçekleşir.
  • subtree (varsayılan): Kimlik doğrulama veya arama, temel düzeyde ve tamamen temelin altında gerçekleştirilir.

Kimlik Doğrulama

Authentication

Uyguladığınız kimlik doğrulama davranışının üst öğesi.

UserName

Aşağıdaki özelliklerden birini alan boş öğe:

  • ref: İstekteki kullanıcı adına yönelik bir referans (örneğin, request.header.username)
  • value: Kullanıcı adının kendisi

Kullanıcı adıyla kimlik doğrulaması yapmıyorsanız veya kullanıcı adı isteğe dahil değilse bu öğeyi eklemeniz gerekmez.

İstekte kullanıcı adı yer alıyorsa ancak kullanıcı adı dışında (e-posta gibi) bir DN özelliğiyle kullanıcının kimliğini doğrulamak istiyorsanız şifreyle ilişkilendirilen kullanıcı e-postasını almak için bir SearchQuery ekleyin. LDAP politikası, ilgili e-posta adresi için LDAP sağlayıcısını sorgulamak amacıyla kullanıcı adını kullanır. Bu kullanıcı adı, daha sonra kimlik doğrulama amacıyla kullanılır.

Password

Aşağıdaki özelliklerden birini alan boş öğe:

  • ref: İstekteki şifre referansı (ör. request.header.password)
  • value: Şifrelenmiş şifrenin kendisi

SearchQuery

Kullanıcı adı dışında e-posta gibi bir DN özelliği kullanarak kimlik doğrulamak istiyorsanız istekten bir DN özelliği (ör. kullanıcı adı) almak için LDAP politikasını yapılandırın. Bu özellik, kullanıcıyı LDAP'de tanımlamak, e-postayı almak ve kullanıcının kimliğini doğrulamak için kullanılır.

Örneğin, LDAP'nin e-posta adresini depolamak için bir "mail" özelliği tanımladığı varsayıldığında:

<SearchQuery>mail={request.header.mail}</SearchQuery>

Arama

Search

Uyguladığınız arama davranışının üst öğesi.

SearchQuery

İstek veya yanıtta meta veriler bulunan kullanıcıyı tanımlayarak bu öğeyi LDAP'den kullanıcı için ek DN özellikleri almak amacıyla kullanabilirsiniz. Örneğin, istekte kullanıcı e-posta adresi varsa ve LDAP'niz kullanıcı e-posta adreslerini depolamak için mail özelliği tanımlarsa aşağıdaki ayarı kullanırsınız:

<SearchQuery>mail={request.header.mail}</SearchQuery>

Bu sorgu, LDAP'de istekteki e-postayla eşleşen bir e-posta arar ve politika artık Attributes (Özellikler) öğesiyle ilgili kullanıcı için ek DN özellikleri alabilir.

Attributes

Kullanıcı için almak istediğiniz DN meta verilerini tanımlamak üzere bir veya daha fazla <Attribute> öğesi kullanın. En az bir özellik gereklidir.

Örneğin, SearchQuery kullanıcıyı tanımladıktan sonra politika artık aşağıdaki örnekte gösterildiği gibi kullanıcı için adres, telefon numarası ve kullanıcının unvanı gibi DN özelliklerini alabilir.

Özellik değerleri LDAP'nizde tanımlanan DN özellik adlarıdır.

<Attributes>
  <Attribute>address</Attribute>
  <Attribute>phone</Attribute>
  <Attribute>title</Attribute>
</Attributes>

Kullanım notları

Private Cloud için Apigee Edge, API çağrılarında bir LDAP sağlayıcısından yararlanmanızı sağlar. Uygulamalar, LDAP Politikası ile LDAP'de depolanan kullanıcılara karşı kimlik bilgilerini doğrulayabilir ve LDAP'den ayırt edici adları (DN'ler) (her bir kullanıcıyla ilişkilendirilen e-posta, adres ve telefon numarası gibi meta veriler veya özellikler) alabilirsiniz. Döndürülen DN, API proxy'si tarafından daha sonra kullanılmak üzere bir değişkende depolanır.

LDAP kaynağı oluşturma

LDAP politikası, Apigee Edge'de oluşturduğunuz bir LDAP kaynağından yararlanır. LDAP kaynağı, LDAP deponuzla bağlantı bilgilerini sağlar.

LDAP kaynakları oluşturmak ve yönetmek için aşağıdaki API'yi ve yükü kullanın:

API

Bir LDAP kaynağı (POST) oluşturun veya tüm LDAP kaynaklarını listeleyin (GET):

/v1/organizations/org_name/environments/environment/ldapresources

Bir LDAP kaynağı için (GET), Güncelleme (POST) ve Silme (DELETE) ile ilgili ayrıntıları alma:

/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name

Yük

Aşağıda, kullanım yorumlarını içeren örnek bir XML yükü gösterilmektedir.

<LdapResource name="ldap1">
  <Connection>
    <Hosts>
      <!-- port is optional: defaults to 389 for ldap:// and 636 for ldaps:// -->
      <Host port="636">foo.com</Host>
    </Hosts>
    <SSLEnabled>false</SSLEnabled> <!-- optional, defaults to false -->
    <Version>3</Version> <!-- optional, defaults to 3-->
    <Authentication>simple</Authentication> <!-- optional, only simple supported -->
    <ConnectionProvider>jndi|unboundid</ConnectionProvider> <!-- required -->
    <ServerSetType>single|round robin|failover</ServerSetType> <!-- not applicable for jndi -->
    <!-- If using a custom LDAP provider, the fully qualified class: -->
    <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass>
  </Connection>
  <ConnectPool enabled="true"> <!-- enabled is optional, defaults to true -->
    <Timeout>30000</Timeout> <!-- optional, in milliseconds; if not set, no timeout -->
    <Maxsize>50</Maxsize> <!-- optional; if not set, no max connections -->
    <Prefsize>30</Prefsize> <!-- optional; if not set, no pref size -->
    <Initsize></Initsize> <!-- optional; if not set, defaults to 1 -->
    <Protocol></Protocol> <!-- optional; if not set, defaults to 'ssl plain' -->
  </ConnectPool>
  <Admin>
    <DN>cn=manager,dc=apigee,dc=com</DN>
    <Password>secret</Password>
  </Admin>
</LdapResource>

curl örneği: LDAP kaynağı oluşturma

Aşağıdaki örnek, ldap1 adında bir LDAP kaynağı oluşturur.

curl -X POST -H "Content-Type: application/xml" \
  https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources \
  -u apigee_email:password -d \
  '<LdapResource name="ldap1">
    <Connection>
      <Hosts>
      <Host>foo.com</Host>
      </Hosts>
      <SSLEnabled>false</SSLEnabled>
      <Version>3</Version>
      <Authentication>simple</Authentication>
      <ConnectionProvider>unboundid</ConnectionProvider>
      <ServerSetType>round robin</ServerSetType>
    </Connection>
    <ConnectPool enabled="true">
      <Timeout>30000</Timeout>
      <Maxsize>50</Maxsize>
      <Prefsize>30</Prefsize>
      <Initsize></Initsize>
      <Protocol></Protocol>
    </ConnectPool>
    <Admin>
      <DN>cn=manager,dc=apigee,dc=com</DN>
      <Password>secret</Password>
    </Admin>
  </LdapResource>'

Yanıt kodları

Politikanın başarılı veya başarısız olması durumunda döndürdüğü HTML yanıt kodları aşağıda verilmiştir:

  • Başarı: 200
  • Hata: 401

Private Cloud için Edge'de özel bir LDAP sağlayıcısı kullanma

Özel bir LDAP sağlayıcısı kullanma

Private Cloud için Apigee Edge, LDAP Politikası ile etkileşim kurmak üzere yapılandırılmış bir LDAP sağlayıcısıyla birlikte sunulur. Ancak, özel bir LDAP sağlayıcısı kullanıyorsanız sağlayıcının LDAP Politikasını desteklemesini etkinleştirmeniz gerekir. Bunun için:

  1. LDAP sağlayıcı sınıfınızda ExternalLdapConProvider arayüzünü uygulayın.
    public interface ExternalLdapConProvider {
      void doAuthentication(LdapBean LlapBean, String userDN, String password, String baseDN);
    
      void doSearchAndAuthentication(LdapBean LlapBean, String password, String baseDN, String query, int scope);
    
      Collection<Map<String, String[]>> doSearch(LdapBean LlapBean, String query,
        String baseDN, Collection<String> requiredAttributes, int scope);
    
      void closeConnections();
    }
  2. Politika yapılandırmasının <LdapConnectorClass> bölümünde (sonraki bölümler) özel LDAP sağlayıcınızın tam sınıf adını ekleyin.
  3. Şu dosyayı indirin: custom-ldap.jar_.zip. (Sağ tıklayıp Farklı Kaydet'i seçmeniz gerekebilir.)
  4. İçindekileri çıkarın.
  5. custom-ldap.jar dosyasını ortamınıza ekleyin ve dosyanın sınıf yolunda olduğundan emin olun.
  6. LDAP sağlayıcınız için bir ortam kaynağı oluşturun. Ortam kaynağı adını, LDAP politikasının <LdapResource> öğesinde kullanacaksınız.

Java için UnboundID LDAP SDK'sını Kullanma

UnboundID LDAP SDK'sını LDAP politikasıyla kullanabilirsiniz ancak önce 2.3.1 sürümünü indirmeniz ve İleti İşleyicinizin sınıf yollarının her birine eklemeniz gerekir.

UnboundID LDAP SDK'sını LDAP politikasıyla kullanmak için:

  1. Bir tarayıcı açın ve UnboundID LDAP SDK'sı için Sourceforge dosya deposuna gidin:
    https://sourceforge.net/projects/ldap-sdk/files/
  2. SDK'nın 2.3.1 (SE veya Standart Sürüm) sürümünü bulun ve bu sürümün ZIP dosyasını indirin. Örneğin, "unboundid-ldapsdk-2.3.1-se.zip" dosyasını indirin.
  3. Aşağıdaki örnekte gösterildiği gibi, JAR dosyasını SDK ZIP dosyasından çıkarın:
    unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar

    Bu komut yalnızca JAR dosyasını ~/tmp dizinine çıkarır. İsteğe bağlı olsa da, dizin yapısını -j ile kaldırır.

  4. Her Mesaj İşleyici düğümünde:
    1. JAR dosyasını Mesaj İşleyici'nin /opt/apigee/edge-gateway/lib/thirdparty dizinine kopyalayın.
    2. Gerekirse mesaj işlemcisinin erişebilmesi için Apigee kullanıcısına JAR dosyasında izin verin.
    3. Edge, /opt/apigee/edge-gateway/lib/thirdparty dizinindeki tüm üçüncü taraf kitaplıklarını sınıf yoluna ekler.

    4. Mesaj İşleyici'yi yeniden başlatın:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Akış değişkenleri

Aşağıda SearchQuery ile doldurulan LDAP Politikası değişkenleri verilmiştir.

Değişken

Açıklama

ldap.policyName.execution.success

Politika yürütüldükten sonra bu akış değişkeni, sonuca bağlı olarak "true" (doğru) veya "false" (yanlış) değerini içerir.

ldap.policyName.search.result[index].
  attribute.attrName[index]=value

Bu değişkenin esnek biçimi, özellikle dizin: birden çok özelliği ve birden çok değeri olan özellikleri dikkate alır. Dizin 1 ile başlayan bir sayıdır. Dizin numarası sağlanmazsa varsayılan dizin numarası 1'dir.

Politika adres, telefon ve e-posta döndürürse ilk özelliği ve değeri aşağıdaki değişkenleri kullanarak alabilirsiniz:

ldap.policyName.search.result.attribute.address
ldap.policyName.search.result.attribute.phone
ldap.policyName.search.result.attribute.email

Arama sonuçlarında üçüncü adres özelliğini almak istiyorsanız şunu kullanmanız gerekir:

ldap.policyName.search.result[3].attribute.address

Bir özelliğin birden çok değeri varsa (örneğin, bir kullanıcının birden fazla e-posta adresi varsa) ikinci e-posta adresini aşağıdaki gibi sonuçlardan alırsınız:

ldap.policyName.search.result.attribute.mail[2]

Hata kodları

Edge politikalarından döndürülen hatalar, Hata kodu referansı bölümünde açıklanan tutarlı bir biçimde olur.

Bu politika aşağıdaki hata kodlarını kullanır:

Hata Kodu Message
InvalidAttributeName Invalid attribute name {0}.
InvalidSearchBase Search base can not be empty.
InvalidValueForPassword Invalid value for password field. It can not be empty.
InvalidSearchScope Invalid scope {0}. Allowed scopes are {1}.
InvalidUserCredentials Invalid user credentials.
InvalidExternalLdapReference Invalid external ldap reference {0}.
LdapResourceNotFound Ldap resource {0} not found.
BaseDNRequired Base DN required.
OnlyReferenceOrValueIsAllowed Only value or reference is allowed for {0}.
AttributesRequired At least one attribute required for search action.
UserNameIsNull User name is null.
SearchQueryAndUserNameCannotBePresent Both search query and username can not be present in the authentication action. Please specify either one of them.