Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Apa
Kebijakan LDAP menyediakan:
- Autentikasi: Kredensial pengguna yang diberikan dalam permintaan divalidasi
berdasarkan kredensial di penyedia LDAP. Kebijakan LDAP memberi Anda banyak fleksibilitas terkait autentikasi, sehingga Anda dapat menggunakan nilai DN apa pun beserta sandinya, meskipun nilai DN yang Anda inginkan tidak ada dalam permintaan. Misalnya, Anda perlu menggunakan email / sandi untuk autentikasi. Opsi berikut dapat dipilih:
- Jika email ada dalam permintaan, Anda dapat menggunakannya dengan sandi untuk autentikasi LDAP.
- Jika email tidak ada dalam permintaan, tetapi ada atribut DN lainnya (seperti nomor telepon), Anda dapat menggunakan nomor telepon tersebut untuk mendapatkan email yang sesuai dari LDAP, lalu menggunakan email/sandi untuk mengautentikasi.
- Penelusuran nama yang dibedakan (DN): Selain autentikasi, Anda juga dapat menggunakan Kebijakan LDAP untuk mengidentifikasi atribut pengguna dalam permintaan, seperti email, dan menjalankan kueri yang mengambil atribut DN lainnya dari LDAP untuk pengguna tersebut. DN yang diambil disimpan dalam variabel.
Gunakan Kebijakan LDAP jika akses ke resource yang dilindungi harus dibatasi untuk pengguna di penyedia LDAP Anda—seperti pengguna admin, pengguna organisasi, dan developer—terutama ketika akses token OAuth tidak diperlukan atau terlalu berat. Kebijakan ini juga dirancang untuk mengambil metadata nama domain yang akan digunakan dalam alur proxy API.
Misalnya, Anda dapat membuat panggilan API hanya dijalankan saat pengguna berhasil diautentikasi terhadap LDAP; kemudian secara opsional mengambil atribut DN (Nama Domain) untuk pengguna setelah autentikasi berhasil.
Untuk informasi tambahan, lihat:
- Mengelola kebijakan sandi LDAP default untuk pengelolaan API
- "Informasi penting mengenai kebijakan sandi Anda" di Komunitas Apigee
Contoh
Autentikasi nama pengguna/sandi
<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>
Contoh ini memberikan autentikasi terhadap penyedia LDAP. Kebijakan ini meneruskan nama pengguna dan sandi dari permintaan ke LDAP untuk autentikasi.
Autentikasi atribut DN
<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>
Kebijakan ini mendapatkan DN pengguna dengan email di header permintaan, lalu mengautentikasi pengguna terhadap LDAP menggunakan sandi yang diberikan di header permintaan.
Menelusuri LDAP
<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>
Kebijakan ini merujuk ke penyedia LDAP kustom. LDAP menggunakan alamat email di header permintaan untuk mengidentifikasi pengguna, lalu mengambil alamat, telepon, dan jabatan pengguna dari LDAP. Atribut DN yang diambil disimpan dalam variabel. Lihat "Variabel khusus kebijakan".
Untuk menelusuri LDAP dan mengambil atribut DN, permintaan harus menyertakan kredensial administrator.
Referensi elemen
Berikut adalah deskripsi elemen dan atribut Kebijakan LDAP.
Elemen |
Deskripsi |
---|---|
|
Elemen induk dengan atribut nama agar Anda dapat memasukkan nama kebijakan. |
|
Saat menggunakan Kebijakan LDAP dengan penyedia LDAP kustom (tidak disediakan oleh Apigee), tentukan class konektor LDAP yang sepenuhnya memenuhi syarat.
Itulah class tempat Anda mengimplementasikan antarmuka |
|
Masukkan nama lingkungan resource LDAP. Lihat Membuat resource LDAP untuk mengetahui informasi selengkapnya. |
|
Tingkat dasar LDAP tempat semua data Anda berada. Misalnya, di penyedia LDAP Apigee, semua data berada di bagian
|
|
|
Autentikasi |
|
|
Elemen induk untuk perilaku autentikasi yang Anda terapkan. |
|
Elemen kosong yang menggunakan salah satu atribut berikut:
Jika tidak mengautentikasi dengan nama pengguna, atau jika nama pengguna tidak disertakan dalam permintaan, Anda tidak perlu menyertakan elemen ini. Jika nama pengguna ada dalam permintaan, tetapi Anda ingin mengautentikasi pengguna dengan atribut DN selain nama pengguna, misalnya email, sertakan |
|
Elemen kosong yang menggunakan salah satu atribut berikut:
|
|
Jika Anda ingin mengautentikasi menggunakan atribut DN selain nama pengguna, seperti email, konfigurasikan kebijakan LDAP untuk mendapatkan atribut DN dari permintaan (seperti nama pengguna), yang digunakan untuk mengidentifikasi pengguna di LDAP, mengambil email, dan mengautentikasi pengguna. Misalnya, dengan asumsi LDAP menentukan atribut "mail" untuk menyimpan alamat email:
|
Telusuri |
|
|
Elemen induk untuk perilaku penelusuran yang Anda terapkan. |
|
Dengan mengidentifikasi pengguna dengan metadata dalam permintaan atau respons, Anda dapat menggunakan elemen ini untuk mengambil atribut DN tambahan untuk pengguna dari LDAP. Misalnya, jika permintaan berisi email pengguna, dan LDAP Anda menentukan atribut
Kueri ini menelusuri LDAP untuk menemukan email yang cocok dengan email dalam permintaan, dan kebijakan sekarang dapat mengambil atribut DN tambahan untuk pengguna tersebut dengan elemen Attributes. |
|
Gunakan satu atau beberapa elemen Misalnya, setelah Nilai atribut adalah nama atribut DN yang ditentukan di LDAP Anda. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
Catatan penggunaan
Apigee Edge untuk Private Cloud memungkinkan Anda memanfaatkan penyedia LDAP dalam panggilan API. Dengan Kebijakan LDAP, aplikasi dapat mengautentikasi kredensial terhadap pengguna yang disimpan di LDAP, dan Anda dapat mengambil nama yang dibedakan (DN) dari LDAP—metadata, atau atribut, yang dikaitkan dengan setiap pengguna, seperti email, alamat, dan nomor telepon. DN yang ditampilkan disimpan dalam variabel untuk digunakan lebih lanjut oleh proxy API.
Membuat resource LDAP
Kebijakan LDAP memanfaatkan resource LDAP yang Anda buat di Apigee Edge. Resource LDAP memberikan informasi koneksi ke repositori LDAP Anda.
Untuk membuat dan mengelola resource LDAP, gunakan API dan payload berikut:
API
Buat (POST
) sumber daya atau daftar LDAP (GET
) semua sumber daya LDAP:
/v1/organizations/org_name/environments/environment/ldapresources
Dapatkan detail untuk (GET
), Memperbarui (POST
), dan Menghapus (DELETE
) resource LDAP:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
Payload
Berikut adalah contoh payload XML dengan komentar penggunaan.
<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>
contoh curl: Membuat resource LDAP
Contoh berikut membuat resource LDAP bernama ldap1.
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>'
Kode respons
Berikut adalah kode respons HTML yang dikembalikan oleh kebijakan untuk berhasil atau gagal:
- Berhasil: 200
- Kegagalan: 401
Menggunakan penyedia LDAP kustom di Edge untuk Private Cloud
Menggunakan penyedia LDAP kustom
Apigee Edge untuk Private Cloud dilengkapi dengan penyedia LDAP yang sudah dikonfigurasi untuk berinteraksi dengan Kebijakan LDAP. Namun, jika menggunakan penyedia LDAP kustom, Anda harus mengaktifkan penyedia agar mendukung Kebijakan LDAP. Untuk melakukannya:
- Di kelas penyedia LDAP, terapkan antarmuka
ExternalLdapConProvider
.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(); }
- Di
<LdapConnectorClass>
konfigurasi kebijakan (bagian berikutnya), tambahkan nama class yang sepenuhnya memenuhi syarat dari penyedia LDAP kustom Anda. - Download file ini: custom-ldap.jar_.zip. (Anda mungkin harus mengklik kanan dan memilih Save As.)
- Ekstrak file zip tersebut.
- Tambahkan file custom-ldap.jar ke lingkungan Anda dan pastikan file tersebut ada di classpath Anda.
- Membuat resource lingkungan untuk penyedia LDAP Anda. Anda akan menggunakan nama resource lingkungan di elemen
<LdapResource>
kebijakan LDAP.
Menggunakan UnboundID LDAP SDK untuk Java
Anda dapat menggunakan UnboundID LDAP SDK dengan kebijakan LDAP, tetapi Anda harus terlebih dahulu mendownload versi 2.3.1 dan menambahkannya ke setiap classpath Pemroses Pesan.
Untuk menggunakan UnboundID LDAP SDK dengan kebijakan LDAP:
- Buka browser dan buka repositori file Sourceforge untuk UnboundID LDAP SDK:
https://sourceforge.net/projects/ldap-sdk/files/
- Temukan SDK versi 2.3.1 (SE atau Standard Edition) dan download file ZIP untuk versi tersebut. Misalnya, download "unboundid-ldapsdk-2.3.1-se.zip".
- Ekstrak file JAR dari file ZIP SDK, seperti yang ditampilkan pada contoh berikut:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
Perintah ini hanya mengekstrak file JAR ke direktori ~/tmp. Perintah ini menghapus struktur direktori dengan
-j
, meskipun ini bersifat opsional. - Pada setiap node Message Processor:
- Salin file JAR ke direktori
/opt/apigee/edge-gateway/lib/thirdparty
Message Processor. - Jika perlu, berikan izin kepada pengguna Apigee pada file JAR agar pemroses pesan dapat mengaksesnya.
- Mulai ulang Pemroses Pesan:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge menambahkan semua library pihak ketiga dalam direktori
/opt/apigee/edge-gateway/lib/thirdparty
ke classpath. - Salin file JAR ke direktori
Variabel alur
Berikut adalah variabel Kebijakan LDAP yang diisi oleh SearchQuery
.
Variabel |
Deskripsi |
---|---|
ldap.policyName.execution.success |
Setelah kebijakan dijalankan, variabel flow ini akan berisi nilai "true" atau "false", bergantung pada hasilnya. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
Format fleksibel dari variabel ini, khususnya indeks: memperhitungkan beberapa atribut, serta atribut dengan beberapa nilai. Indeks adalah angka yang dimulai dari 1. Jika tidak ada nomor indeks yang diberikan, nomor indeks defaultnya adalah 1. Jika kebijakan tersebut menampilkan alamat, telepon, dan email, Anda dapat mengambil atribut dan nilai pertama menggunakan variabel berikut: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email Jika ingin mengambil atribut alamat ketiga di hasil penelusuran, Anda harus menggunakan atribut ini: ldap.policyName.search.result[3].attribute.address Jika suatu atribut memiliki beberapa nilai (misalnya, jika pengguna memiliki beberapa alamat email), Anda akan mengambil alamat email kedua dari hasil seperti ini: ldap.policyName.search.result.attribute.mail[2] |
Kode error
Error yang ditampilkan dari kebijakan Edge mengikuti format yang konsisten seperti yang dijelaskan dalam Referensi kode error.
Kebijakan ini menggunakan kode error berikut:
Kode Error | Pesan |
---|---|
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. |