LDAP politikası

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

Ne?

LDAP politikası şunları sağlar:

  • Kimlik doğrulama: İstekte sağlanan kullanıcı kimlik bilgileri, LDAP sağlayıcısındaki kimlik bilgilerine göre doğrulanır. LDAP politikası, kimlik doğrulama konusunda size büyük bir esneklik sağlar. İsteğinizde olmasa bile şifreyle birlikte herhangi bir DN değerini kullanmanıza olanak tanır. Örneğin, kimlik doğrulama için e-posta / şifre kullanmanız gerektiğini varsayalım. Aşağıdaki seçenekler kullanılabilir:
    • E-posta istekte yer alıyorsa LDAP kimlik doğrulaması için şifreyle birlikte kullanabilirsiniz.
    • E-posta istekte yoksa ancak başka bir DN özelliği (ör. telefon numarası) varsa LDAP'den ilgili e-postayı almak için telefon numarasını kullanabilir, ardından kimlik doğrulamak için e-posta/şifre kullanabilirsiniz.
  • Ayırt edici ad (DN) araması: Kimlik doğrulamaya ek olarak, LDAP politikasını kullanarak istekteki bir kullanıcı özelliğini (ör. e-posta) tanımlayabilir ve bu kullanıcı için LDAP'den diğer DN özelliklerini alan bir sorgu gerçekleştirebilirsiniz. Alınan DN bir değişkende saklanı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ştiricileriniz) sınırlandırılması gerektiğinde, özellikle OAuth jetonu erişimi gereksiz veya çok ağır olduğunda LDAP politikasını kullanın. Politika, API proxy akışlarında kullanılmak üzere alan adı meta verilerini almak için de tasarlanmıştır.

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

Daha fazla bilgi için:

Örnekler

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

<Ldap name="4GLdapPo>licy<"
   Ld>apRes<ourceldap1/Ld>apRe<source
   Auth>enticati<on
       UserName ref="request.he>ader.use<rname"/
       Password ref=">request.<heade>r.passw<ord&qu>ot;/
   <    Scopesubtree/Scope
   ><    Bas>e<DN ref="apigee.baseDN"/B>aseDN< !-- default is> d<c=api>gee,dc=com --
    /Authentication
 /Ldap

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

DN özelliği kimlik doğrulaması

<Ldap name="LdapPo>licy<"
   Ld>apRes<ourceldap1/Ld>apRe<source
   Auth>enticati<on
       Password ref="request.he>ader.pas<sword">/
       SearchQuerymail={<request.head>er.mail}</Sear>chQuery<
     >  Scopes<ubtree/Scope
       BaseDN>< ref=&q>u<ot;apigee.baseDN"/BaseDN !-- >defau<lt is dc=apigee>,d<c=com> --
    /Authentication
 /Ldap

Bu politika, istek başlığındaki e-posta adresiyle kullanıcının DN'sini alır, ardından istek başlığında sağlanan şifreyle kullanıcının kimliğini LDAP'ye karşı doğrular.

LDAP'de arama

<Ldap name="LdapPo>licy&<quot;
    !-- using a custom LDAP p>rovid<er --
    LdapConn>ectorClasscom.custom.ldap.<MyProvider/LdapConn>ector<Class
    Ld>apReso<urceMyLdap/Ld>apRes<ource<>/span>
    Searc<h
        BaseDN ref="><;apigee>.<baseDN"/BaseDN !-- default is> dc=apige<e,dc=com -->
        SearchQuerymail={<request.head>er.mail}/<SearchQuer>y
        Att<ributes
 >       <    Attrib>uteaddress/At<tribute
 >     <      Attr>ibutephone/At<tribute
 >     <      Attr>ibutetitl<e/Attribute>
        </Attr><ibutes>
<        Scope/S‘cope !-’- d>efaul<t is su>b<tree >--
    /Search
/Ldap

Bu politika, özel bir LDAP sağlayıcısına referans veriyor. Kullanıcıyı tanımlamak için istek üstbilgisindeki 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 saklanır. "Politikaya özgü değişkenler" bölümüne bakın.

LDAP'de arama yapmak ve DN özelliklerini almak için isteğe yönetici kimlik bilgileri eklenmelidir.

Öğ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 bir LDAP sağlayıcı ile kullanırken (Apigee tarafından sağlanmaz) tam nitelikli 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 için LDAP kaynağı oluşturma başlıklı makaleyi inceleyin.

BaseDN

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

  • ref: BaseDN değerini içeren bir akış değişkenini belirtmek için kullanılır. Örneğin, apigee.baseDN. ref, açık bir BaseDN değerine göre önceliklidir. Hem ref hem de value belirtirseniz ref öncelikli olur. ref, çalışma zamanında çözümlenmezse değer kullanılır.

Scope

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

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: İstekle ilgili kullanıcı adına yapılan bir referans (ör. request.header.username).
  • value: Kullanıcı adının kendisi

Kullanıcı adıyla kimlik doğrulamıyorsanız veya kullanıcı adı isteğe dahil edilmemişse bu öğeyi eklemeniz gerekmez.

İstek kullanıcı adı içeriyorsa ancak kullanıcıyı kullanıcı adı dışında bir DN özelliğiyle (ör. e-posta) doğrulamak istiyorsanız şifreyle ilişkili kullanıcı e-postasını almak için SearchQuery ekleyin. LDAP politikası, LDAP sağlayıcısına karşılık gelen e-posta adresini sorgulamak için kullanıcı adını kullanır. Bu adres daha sonra kimlik doğrulama için kullanılır.

Password

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

  • ref: İlgili isteğin şifresine yapılan referans (ör. request.header.password)
  • değer: Şifrelenmiş şifrenin kendisi

SearchQuery

Kullanıcı adı dışında bir DN özelliği (ör. e-posta) kullanarak kimlik doğrulaması yapmak istiyorsanız LDAP politikasını, istekten bir DN özelliği (ör. kullanıcı adı) alacak şekilde 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 "mail" özelliğini tanımladığını varsayarsak:

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

Arama

Search

Uyguladığınız arama davranışı için üst öğe.

SearchQuery

İsteğin veya yanıtın meta verilerinde kullanıcıyı tanımlayarak bu öğeyi, kullanıcı için LDAP'den ek DN özellikleri almak üzere kullanabilirsiniz. Örneğin, istek kullanıcı e-posta adresini içeriyorsa ve LDAP'niz kullanıcı e-posta adreslerini depolamak için bir mail özelliği tanımlıyorsa 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 bu 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, aşağıdaki örnekte gösterildiği gibi kullanıcının DN özelliklerini (ör. adres, telefon numarası ve kullanıcının unvanı) alabilir.

Özellik değerleri, LDAP'nızda tanımlanan DN özelliği adlarıdır.

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

Kullanım notları

Apigee Edge Private Cloud, API çağrılarında bir LDAP sağlayıcısından yararlanmanıza olanak tanır. LDAP politikası sayesinde uygulamalar, LDAP'de depolanan kullanıcılara karşı kimlik bilgilerinin kimliğini doğrulayabilir ve LDAP'den ayırt edici adlar (DN'ler) alabilirsiniz. Bu adlar, her kullanıcıyla ilişkili meta veriler veya özelliklerdir (ör. e-posta, adres ve telefon numarası). Döndürülen DN, API proxy'si tarafından daha sonra kullanılmak üzere bir değişkende saklanır.

LDAP kaynağı oluşturma

LDAP politikası, Apigee Edge'de oluşturduğunuz bir LDAP kaynağını kullanır. LDAP kaynağı, LDAP deponuzla ilgili 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

LDAP kaynağı oluşturma (POST) veya tüm LDAP kaynaklarını listeleme (GET):

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

LDAP kaynağı için ayrıntıları alma (GET), güncelleme (POST) ve silme (DELETE):

/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ü verilmiştir.

<LdapResource name="l>dap<1"
  >Conne<ction>
    Ho<sts
      !-- port is optional: defaults to 389 for ldap:// and 636 for l>daps://< --
      Host >port=&q<uot;6>36&qu<ot;foo>.com/<Host
    />Hosts<
    SSLEna>b<ledfalse/SSLEnabled !-- optional, >defau<lts to >f<alse --
> <   Version3/Version !-- optio>nal, <defaults to 3->-
    <Authentications>i<mple/Authentication !-- optional, only> simp<le supported --
  >  ConnectionPr<oviderjndi|unboundi>d</ConnectionProv>ider <!-- required >--
    ServerSetTypesingle|<round robin|fa>i<lover/ServerSetType !-- not ap>plica<ble for jndi --
    !-- If using a custom LDAP provider, the fully> qual<ified class: --
  >  LdapConnectorClasscom.cu<stom.ldap.MyProvide>r/L<dapConnecto>rCl<ass
  /Connection
  Connec>t<Pool enabled="true" !-- enabled is> opti<onal, d>efaul<ts to tr>u<e --
    Timeout30000/Timeout !-- optional, in milliseco>nds; <if not >se<t, no ti>m<eout --
    Maxsize50/Maxsize !-- optional; if >not s<et, no m>ax< connecti>o<ns --
    Prefsize30/Prefsize !-- optiona>l; if< not set><, no pref> <size --
    Initsize/Initsize !-- optional>; if <not set,>< defaults> <to 1 --
    Protocol/Protocol !-- optional; if not s>et,< defaults to> &#<39;ss>l pla<in>' --
  /ConnectPool
  A<dmi>n
   < DNcn=ma>nager,<dc=apigee>,dc<=com/D>N<
    Password>secret/Password
  /Admin
/LdapResource

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

Aşağıdaki örnekte ldap1 adlı 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:passwor<d -d \
  'LdapResourc>e nam<e="ld>ap1&quo<t;
  >  Conne<ctio>n
     < Host>s
     < Hostf>oo.com/<Host
     > /Hos<ts
      SS>LEnable<dfalse/>S<SLEnable>d
     < Version3/Vers>ion
  <    Authenticat>ionsimp<le/Authentication
>      Con<nectionProviderunbo>undid/C<onnectionProv>ider
      <ServerSetTyper>ound <robin/Serve>rSetT<ype
    /Connection
    Co>nnectPo<ol enab>led=&<quot;tru>e"<
      >Ti<meout300>00/Time<out
    >  <Maxsize50>/Maxsiz<e
      ><Prefsize3>0/Prefs<ize
    ><  Initsiz>e/Ini<tsize
      >Proto<col/P>rotocol<
 >   /ConnectPool
    Admin
 <   >  DNcn=<manager,>dc=api<gee,dc=co>m/DN
<      >Pas<swordsecret/P>assword
    /Admin
  /LdapResource'

Yanıt kodları

Politikanın başarı veya başarısızlık için döndürdüğü HTML yanıt kodları aşağıda verilmiştir:

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

Edge for Private Cloud'da özel bir LDAP sağlayıcısı kullanma

Özel LDAP sağlayıcı kullanma

Apigee Edge for Private Cloud, LDAP politikasıyla etkileşim kurmak üzere önceden yapılandırılmış bir LDAP sağlayıcıyla birlikte gelir. Ancak özel bir LDAP sağlayıcı kullanıyorsanız sağlayıcının LDAP politikasını desteklemesini sağlamanız gerekir. Bunu yapmak 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 nitelikli sınıf adını ekleyin.
  3. custom-ldap.jar_.zip dosyasını indirin. (Sağ tıklayıp Farklı Kaydet'i seçmeniz gerekebilir.)
  4. Dosyayı arşivden çıkarın.
  5. custom-ldap.jar dosyasını ortamınıza ekleyin ve sınıf yolunuzda olduğundan emin olun.
  6. LDAP sağlayıcınız için bir ortam kaynağı oluşturun. LDAP politikasının <LdapResource> öğesinde ortam kaynağı adını kullanırsı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ü indirip her bir mesaj işlemcinizin sınıf yollarına eklemeniz gerekir.

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

  1. Bir tarayıcı açın ve UnboundID LDAP SDK'sının Sourceforge dosya deposuna gidin:
    https://sourceforge.net/projects/ldap-sdk/files/
  2. SDK'nın 2.3.1 sürümünü (SE veya Standard Edition) bulup 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. Bu, isteğe bağlı olsa da -j ile dizin yapısını bırakır.

  4. Her Mesaj İşleyici düğümünde:
    1. JAR dosyasını Message Processor'ın /opt/apigee/edge-gateway/lib/thirdparty dizinine kopyalayın.
    2. Gerekirse mesaj işlemcisinin erişebilmesi için JAR dosyasında Apigee kullanıcısına 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 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, sonuca bağlı olarak "true" veya "false" değerini içerir.

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

Bu değişkenin esnek biçimi, özellikle de dizin; birden fazla özelliğin yanı sıra birden fazla değere sahip özellikleri de hesaba katar. Dizin, 1'den başlayan bir sayıdır. Dizin numarası sağlanmazsa varsayılan dizin numarası 1 olur.

Politika adres, telefon ve e-posta döndürüyorsa şu değişkenleri kullanarak ilk özelliği ve değeri 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 kullanırsınız:

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

Bir özellik birden fazla değere sahipse (örneğin, bir kullanıcının birden fazla e-posta adresi varsa) sonuçlardan ikinci e-posta adresini şu şekilde alırsınız:

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

Hata kodları

Edge politikalarından döndürülen hatalar, Hata kodu referansı'nda 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.