LDAP politikası

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Ne?

LDAP Politikası şunları sağlar:

  • Kimlik doğrulama: İstekte sağlanan kullanıcı kimlik bilgileri doğrulanır. kimlik bilgileriyle karşılaştırarak kontrol eder. LDAP politikası, kimlik doğrulamasıyla, şifreyle birlikte herhangi bir DN değerini (söz konusu DN değeri olsa bile) bu istek istekte yer almaz. Örneğin, şunun için e-posta / şifre kullanmanız gerektiğini varsayalım: kimlik doğrulama. Aşağıdaki seçenekler kullanılabilir:
    • İstekte e-posta adresi yer alıyorsa, bunu LDAP şifresiyle birlikte kullanabilirsiniz. kimlik doğrulama.
    • E-posta istekte yer almıyorsa ancak başka bir DN özelliği (ör. telefon numarası) bulunuyorsa LDAP'den ilgili e-postayı almak için telefon numarasını kullanabilir, ardından e-posta / parolayı girin.
  • Ayırt edici ad (DN) araması: Kimlik doğrulamasına ek olarak istekteki e-posta ve kullanıcı özellikleri gibi bir kullanıcı özelliğini tanımlamak için o kullanıcıya ait diğer DN özelliklerini LDAP'den alan bir sorgu gerçekleştirebilirsiniz. Alınan DN: bir değişkende depolanır.

Korunan kaynaklara erişimin LDAP'nizdeki kullanıcılarla sınırlı olması gerektiğinde LDAP Politikası'nı kullanın (özellikle de yönetici kullanıcılarınız, kuruluşunuzdaki kullanıcılar ve geliştiriciler gibi) OAuth jetonu erişimi gereksiz veya çok ağır. Politika ayrıca aşağıdakiler için de tasarlanmıştır: API proxy akışlarında kullanılmak üzere alan adı meta verilerini alma.

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

Ek bilgi için:

Örnekler

Kullanıcı adı/şifre 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 yönelik kimlik doğrulama sağlar. Politika, kullanıcı adını iletir. LDAP'ye gönderdiğiniz istekle ilişkili ve parolayı girin.

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 kullanıcının DN'sini alır, ardından Kullanıcı kimliğini, istek başlığında sağlanan şifreyle LDAP'de doğrular.

LDAP 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. İstekteki e-posta adresini kullanır kullanıcıyı tanımlamak için kullanılır, ardından kullanıcının LDAP. Alınan DN özellikleri bir değişkende depolanır. "Politikaya özel" değişkenleri" olarak ayarlanır.

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

Öğe referansı

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

Öğe

Açıklama

Ldap

Politika adını girmeniz için ad özelliğine sahip üst öğe.

LdapConnectorClass

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

LdapResource

LDAP kaynağının ortam adını girin. Bkz. LDAP kaynağı'nı inceleyin.

BaseDN

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

  • ref: BaseDN değerini içeren şunun gibi bir akış değişkeni belirtmek için kullanın: apigee.baseDN. ref, açık bir BaseDN değerine göre önceliklidir. Örneğin hem referans hem de değer, ref önceliği vardır. Referans şu saatte çözümlenmezse: değeri kullanılır.

Scope

  • object: Kimlik doğrulama veya arama yalnızca LDAP.
  • onelevel: Kimlik doğrulama veya arama işlemi, taban seviyenin bir alt düzeyinde gerçekleşir seviyesinde olmalıdır.
  • subtree (varsayılan): Kimlik doğrulama veya arama temel düzeyde gerçekleştirilir ve tamamen yinelemeli olarak taban altında yer alır.

Kimlik Doğrulama

Authentication

Uyguladığınız kimlik doğrulama davranışı için üst öğe.

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ı ile kimlik doğrulaması yapmıyorsanız veya kullanıcı adı bu öğeyi eklemeniz gerekmez.

İstekte kullanıcı adı yer alıyorsa ancak DN özelliğine sahip bir kullanıcının kimliğini doğrulamak istiyorsanız Kullanıcı e-posta adresini almak için kullanıcı adı yerine SearchQuery ekleyin parolayı girin. LDAP politikası, LDAP sağlayıcısını sorgulamak için kullanıcı adını kullanır Bu e-posta adresi, kimlik doğrulama için kullanılır.

Password

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

  • ref: İstekteki şifre için bir referans, örneğin request.header.password
  • value: Şifrelenmiş şifrenin kendisi

SearchQuery

Kullanıcı adı dışındaki bir DN özelliğini (e-posta gibi) kullanarak kimlik doğrulaması yapmak istiyorsanız LDAP politikasını istekten bir DN özelliği (kullanıcı adı gibi) alacak şekilde yapılandırmanız gerekir. Bu, LDAP'de kullanıcıyı tanımlamak, e-postayı almak ve belirtir.

Örneğin, LDAP'nin bir "e-posta"yı tanımladığını varsayarsak özelliği:

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

Arama

Search

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

SearchQuery

İstek veya yanıtta meta veri ile kullanıcıyı tanımlayarak öğesi kullanabilirsiniz. Örneğin, isteği, kullanıcı e-postasını içerir ve LDAP'niz için bir mail özelliği tanımlar şu ayarı kullanırsınız:

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

Bu sorgu, istekteki e-posta ile eşleşen e-postayı bulmak için LDAP'de arama yapar ve politika artık Özellikler öğesine dokunun.

Attributes

Şunlar için bir veya daha fazla <Attribute> öğesi kullanın: kullanıcı için almak istediğiniz DN meta verilerini tanımlayın. Özelliklerden en az biri gereklidir.

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

Ö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ıza olanak tanır. LDAP ile Politika, uygulamalar LDAP'de depolanan kullanıcılara karşı kimlik bilgilerini doğrulayabilir ve LDAP'den ayırt edici adları (DN'ler) al; ilişkili meta veriler veya özellikler (ör. e-posta, adres ve telefon numarası) Döndürülen DN, tarafından daha fazla kullanılması olduğunu hatırlatmak isteriz.

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ğı oluşturun (POST) ya da tüm LDAP kaynaklarını listeleyin (GET):

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

Bir LDAP kaynağı (GET), Güncelleme (POST) ve Sil (DELETE) ile ilgili ayrıntıları alın:

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

Yük

Aşağıda, kullanım yorumları 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 örnekte ldap1 adında bir LDAP kaynağı oluşturulur.

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ı

Aşağıda, politikanın başarı veya başarısızlık durumunda döndürdüğü HTML yanıt kodları bulunmaktadır:

  • Başarılı: 200
  • Hata: 401

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

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

Private Cloud için Apigee Edge, halihazırda LDAP Politikası ile etkileşimde bulunmanız gerekir. Ancak, özel bir LDAP sağlayıcı kullanıyorsanız LDAP Politikası'nı desteklemesi için sağlayıcıdan teyit almanız 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. Sıkıştırılmış dosyayı açın.
  5. custom-LDAP.jar dosyasını ortamınıza ekleyin ve dosyanın sınıf yolunuzda bulunduğundan emin olun.
  6. LDAP sağlayıcınız için bir ortam kaynağı oluşturun. Ortam kaynağını kullanacaksınız LDAP politikasının <LdapResource> öğesindeki ad.

Her bir Java için UnboundID LDAP SDK'sı

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

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

  1. Bir tarayıcı açın ve UnboundID LDAP SDK'nın 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 ZIP dosyasını indirin olanak tanır. Örneğin, "unboundid-LDAPsdk-2.3.1-se.zip" dosyasını indirin.
  3. JAR dosyasını, aşağıdaki örnekte gösterildiği gibi 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. Dizin'i bırakır (isteğe bağlı olsa da) -j ile yapılandırılacak.

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

    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 tarafından 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 "true" değerini içerir "yanlış", seçin.

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

Bu değişkenin esnek biçimi, belirli: birden fazla özellik ve birden çok özelliği değerler. Dizin 1'den başlayan bir sayıdır. Dizin numarası sağlanmazsa varsayılan dizin numarası 1'dir.

Politika; adres, telefon ve e-posta adresi döndürürse ilk özelliği alabilirsiniz değerini girin:

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

Arama sonuçlarındaki üçüncü adres özelliğini almak isterseniz şunu kullanırsınız:

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

Bir özelliğin birden fazla değeri varsa (örneğin, bir kullanıcının birden fazla e-posta adresi varsa) kullanıyorsanız ikinci e-posta adresini şu şekilde 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çıklandığı gibi tutarlı bir biçime sahiptir.

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.