คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
อะไร
นโยบาย LDAP มีฟังก์ชันต่อไปนี้
- การตรวจสอบสิทธิ์: ระบบจะตรวจสอบข้อมูลเข้าสู่ระบบของผู้ใช้ที่ระบุในคำขอเทียบกับข้อมูลเข้าสู่ระบบในผู้ให้บริการ LDAP
นโยบาย LDAP มีความยืดหยุ่นสูงกับ
การตรวจสอบสิทธิ์ โดยให้คุณใช้ค่า DN ใดก็ได้พร้อมกับรหัสผ่าน แม้ว่าค่า DN
ที่ต้องการจะไม่ได้อยู่ในคำขอ ตัวอย่างเช่น สมมติว่าคุณต้องใช้อีเมล / รหัสผ่านในการตรวจสอบสิทธิ์
คุณสามารถเลือกตัวเลือกต่อไปนี้ได้
- หากอีเมลอยู่ในคำขอ คุณก็สามารถใช้อีเมลนั้นกับรหัสผ่านเพื่อตรวจสอบสิทธิ์ LDAP ได้เลย
- หากอีเมลไม่ได้อยู่ในคำขอ แต่แอตทริบิวต์ DN อื่นอยู่ในคำขอ (เช่น หมายเลขโทรศัพท์) คุณสามารถใช้หมายเลขโทรศัพท์เพื่อรับอีเมลที่เกี่ยวข้องจาก LDAP แล้วใช้อีเมล/ รหัสผ่านเพื่อตรวจสอบสิทธิ์
- การค้นหาชื่อเฉพาะ (DN): นอกจากการตรวจสอบสิทธิ์แล้ว คุณยัง ใช้นโยบาย LDAP เพื่อระบุแอตทริบิวต์ของผู้ใช้ในคำขอ เช่น อีเมล และ ทำการค้นหาเพื่อดึงแอตทริบิวต์ DN อื่นๆ จาก LDAP สำหรับผู้ใช้รายนั้นได้ด้วย ระบบจะจัดเก็บ DN ที่ดึงมาไว้ในตัวแปร
ใช้นโยบาย LDAP เมื่อต้องการจำกัดการเข้าถึงทรัพยากรที่ได้รับการปกป้องไว้สำหรับผู้ใช้ในผู้ให้บริการ LDAP เช่น ผู้ใช้ที่เป็นผู้ดูแลระบบ ผู้ใช้ในองค์กร และนักพัฒนาแอป โดยเฉพาะอย่างยิ่งเมื่อ การเข้าถึงโทเค็น OAuth ไม่จำเป็นหรือมีขนาดใหญ่เกินไป นโยบายนี้ยังออกแบบมาเพื่อ ดึงข้อมูลเมตาของชื่อโดเมนเพื่อใช้ในโฟลว์พร็อกซี API
ตัวอย่างเช่น คุณสามารถกำหนดให้การเรียก API ทำงานได้ก็ต่อเมื่อผู้ใช้ได้รับการตรวจสอบสิทธิ์สำเร็จ กับ LDAP แล้ว จากนั้นเลือกดึงแอตทริบิวต์ DN (ชื่อโดเมน) สำหรับผู้ใช้หลังจาก ตรวจสอบสิทธิ์สำเร็จ
ดูข้อมูลเพิ่มเติมได้ที่
- การจัดการ นโยบายรหัสผ่าน LDAP เริ่มต้นสำหรับการจัดการ API
- "ข้อมูลสำคัญเกี่ยวกับนโยบายรหัสผ่าน" ใน ชุมชน Apigee
ตัวอย่าง
การตรวจสอบสิทธิ์ด้วยชื่อผู้ใช้/รหัสผ่าน
<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>ตัวอย่างนี้แสดงการตรวจสอบสิทธิ์กับผู้ให้บริการ LDAP นโยบายจะส่งชื่อผู้ใช้ และรหัสผ่านจากคำขอไปยัง LDAP เพื่อตรวจสอบสิทธิ์
การตรวจสอบสิทธิ์แอตทริบิวต์ 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>นโยบายนี้จะรับ DN ของผู้ใช้ด้วยอีเมลในส่วนหัวของคำขอ จากนั้น ตรวจสอบสิทธิ์ผู้ใช้กับ LDAP ด้วยรหัสผ่านที่ระบุในส่วนหัวของคำขอ
การค้นหา 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>
นโยบายนี้อ้างอิงผู้ให้บริการ LDAP ที่กำหนดเอง โดยใช้อีเมลในส่วนหัวของคำขอ เพื่อระบุผู้ใช้ จากนั้นดึงที่อยู่ โทรศัพท์ และตำแหน่งของผู้ใช้จาก LDAP ระบบจะจัดเก็บแอตทริบิวต์ DN ที่ดึงมาไว้ในตัวแปร ดู "ตัวแปรเฉพาะนโยบาย"
หากต้องการค้นหา LDAP และดึงแอตทริบิวต์ DN คำขอต้องมีข้อมูลเข้าสู่ระบบของผู้ดูแลระบบ
ข้อมูลอ้างอิงองค์ประกอบ
ต่อไปนี้เป็นคำอธิบายขององค์ประกอบและแอตทริบิวต์ของนโยบาย LDAP
|
องค์ประกอบ |
คำอธิบาย |
|---|---|
|
|
องค์ประกอบระดับบนสุดที่มีแอตทริบิวต์ name ให้คุณป้อนชื่อนโยบาย |
|
|
เมื่อใช้นโยบาย LDAP กับผู้ให้บริการ LDAP ที่กำหนดเอง custom LDAP
provider (ไม่ได้มาจาก Apigee) ให้ระบุคลาสตัวเชื่อมต่อ LDAP ที่มีคุณสมบัติครบถ้วน
ซึ่งเป็นคลาสที่คุณใช้เพื่อติดตั้งใช้งานอินเทอร์เฟซ |
|
|
ป้อนชื่อสภาพแวดล้อมของทรัพยากร LDAP ดูข้อมูลเพิ่มเติมได้ที่สร้าง ทรัพยากร LDAP |
|
|
ระดับฐานของ LDAP ที่ข้อมูลทั้งหมดของคุณอยู่ เช่น ใน
ผู้ให้บริการ LDAP ของ Apigee ข้อมูลทั้งหมดจะอยู่ภายใต้
|
|
|
|
|
การตรวจสอบสิทธิ์ |
|
|
|
องค์ประกอบระดับบนสุดสำหรับลักษณะการทำงานของการตรวจสอบสิทธิ์ที่คุณติดตั้งใช้งาน |
|
|
องค์ประกอบว่างที่ใช้แอตทริบิวต์ใดแอตทริบิวต์หนึ่งต่อไปนี้
หากไม่ได้ตรวจสอบสิทธิ์ด้วยชื่อผู้ใช้ หรือหากชื่อผู้ใช้ไม่ได้รวมอยู่ใน คำขอ คุณไม่จำเป็นต้องรวมองค์ประกอบนี้ หากชื่อผู้ใช้อยู่ในคำขอ แต่คุณต้องการตรวจสอบสิทธิ์ผู้ใช้ด้วยแอตทริบิวต์ DN อื่นที่ไม่ใช่ชื่อผู้ใช้ เช่น อีเมล ให้รวม |
|
|
องค์ประกอบว่างที่ใช้แอตทริบิวต์ใดแอตทริบิวต์หนึ่งต่อไปนี้
|
|
|
หากต้องการตรวจสอบสิทธิ์โดยใช้แอตทริบิวต์ DN อื่นที่ไม่ใช่ชื่อผู้ใช้ เช่น อีเมล กำหนดค่านโยบาย LDAP เพื่อรับแอตทริบิวต์ DN จากคำขอ (เช่น ชื่อผู้ใช้) ซึ่งจะใช้เพื่อระบุผู้ใช้ใน LDAP ดึงอีเมล และตรวจสอบสิทธิ์ ผู้ใช้ ตัวอย่างเช่น สมมติว่า LDAP กำหนดแอตทริบิวต์ "mail" สำหรับจัดเก็บอีเมล ให้ใช้ `<SearchQuery>mail={request.header.mail}</SearchQuery>`
|
|
ค้นหา |
|
|
|
องค์ประกอบระดับบนสุดสำหรับพฤติกรรมการค้นหาที่คุณติดตั้งใช้งาน |
|
|
การระบุผู้ใช้ด้วยข้อมูลเมตาในคำขอหรือการตอบกลับจะช่วยให้คุณใช้
องค์ประกอบนี้เพื่อดึงแอตทริบิวต์ DN เพิ่มเติมสำหรับผู้ใช้จาก LDAP ได้ ตัวอย่างเช่น หากคำขอมีอีเมลของผู้ใช้ และ LDAP กำหนดแอตทริบิวต์
การค้นหานี้จะค้นหา LDAP สำหรับอีเมลที่ตรงกับอีเมลในคำขอ และตอนนี้ นโยบายสามารถดึงแอตทริบิวต์ DN เพิ่มเติมสำหรับผู้ใช้รายนั้นด้วยองค์ประกอบ Attributes |
|
|
ใช้องค์ประกอบ ตัวอย่างเช่น หลังจาก ค่าแอตทริบิวต์คือชื่อแอตทริบิวต์ DN ที่กำหนดไว้ใน LDAP <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
หมายเหตุการใช้งาน
Apigee Edge for Private Cloud ช่วยให้คุณใช้ประโยชน์จากผู้ให้บริการ LDAP ในการเรียก API ได้ นโยบาย LDAP ช่วยให้แอปพลิเคชันตรวจสอบสิทธิ์ข้อมูลเข้าสู่ระบบกับผู้ใช้ที่จัดเก็บไว้ใน LDAP ได้ และคุณสามารถ ดึงชื่อเฉพาะ (DN) จาก LDAP ซึ่งเป็นข้อมูลเมตาหรือแอตทริบิวต์ที่เชื่อมโยงกับ ผู้ใช้แต่ละราย เช่น อีเมล ที่อยู่ และหมายเลขโทรศัพท์ ระบบจะจัดเก็บ DN ที่แสดงผลไว้ในตัวแปรเพื่อให้ พร็อกซี API ใช้งานต่อไป
สร้างทรัพยากร LDAP
นโยบาย LDAP ใช้ประโยชน์จากทรัพยากร LDAP ที่คุณสร้างใน Apigee Edge ทรัพยากร LDAP จะให้ข้อมูลการเชื่อมต่อกับที่เก็บ LDAP
หากต้องการสร้างและจัดการทรัพยากร LDAP ให้ใช้ API และเพย์โหลดต่อไปนี้
API
สร้าง (POST) ทรัพยากร LDAP หรือแสดงรายการ (GET) ทรัพยากร LDAP ทั้งหมด
/v1/organizations/org_name/environments/environment/ldapresources
รับรายละเอียด (GET), อัปเดต (POST) และลบ (DELETE) ทรัพยากร LDAP
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
เพย์โหลด
ต่อไปนี้เป็นเพย์โหลด XML ตัวอย่างพร้อมความคิดเห็นเกี่ยวกับการใช้งาน
<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: สร้างทรัพยากร LDAP
ตัวอย่างต่อไปนี้สร้างทรัพยากร LDAP ชื่อ 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>'
โค้ดตอบกลับ
ต่อไปนี้เป็นโค้ดตอบกลับ HTML ที่นโยบายแสดงผลเมื่อสำเร็จหรือล้มเหลว
- สำเร็จ: 200
- ล้มเหลว: 401
การใช้ผู้ให้บริการ LDAP ที่กำหนดเองใน Edge for Private Cloud
การใช้ผู้ให้บริการ LDAP ที่กำหนดเอง
Apigee Edge for Private Cloud มาพร้อมกับผู้ให้บริการ LDAP ที่กำหนดค่าไว้แล้วเพื่อ โต้ตอบกับนโยบาย LDAP อย่างไรก็ตาม หากคุณใช้ผู้ให้บริการ LDAP ที่กำหนดเอง คุณต้องเปิดใช้ ผู้ให้บริการเพื่อให้รองรับนโยบาย LDAP โดยทำดังนี้
- ในคลาสผู้ให้บริการ LDAP ให้ติดตั้งใช้งานอินเทอร์เฟซ
ExternalLdapConProviderpublic 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(); } - ใน
<LdapConnectorClass>ของการกำหนดค่านโยบาย (ส่วนถัดไป) เพิ่มชื่อคลาสที่มีคุณสมบัติครบถ้วนของผู้ให้บริการ LDAP ที่กำหนดเอง - ดาวน์โหลดไฟล์นี้: custom-ldap.jar_.zip (คุณอาจต้องคลิกขวาแล้วเลือกบันทึกเป็น)
- คลายซิปไฟล์
- เพิ่มไฟล์ custom-ldap.jar ลงในสภาพแวดล้อมและตรวจสอบว่าไฟล์อยู่ใน classpath
- สร้างทรัพยากรสภาพแวดล้อมสำหรับผู้ให้บริการ LDAP คุณจะใช้ชื่อทรัพยากรสภาพแวดล้อมในองค์ประกอบ
<LdapResource>ของนโยบาย LDAP
การใช้ UnboundID LDAP SDK สำหรับ Java
คุณสามารถใช้ UnboundID LDAP SDK กับนโยบาย LDAP ได้ แต่ก่อนอื่นคุณต้องดาวน์โหลดเวอร์ชัน 2.3.1 แล้วเพิ่มลงใน classpath ของ Message Processor แต่ละรายการ
วิธีใช้ UnboundID LDAP SDK กับนโยบาย LDAP
- เปิดเบราว์เซอร์และไปที่ที่เก็บไฟล์ Sourceforge สำหรับ UnboundID LDAP SDK
https://sourceforge.net/projects/ldap-sdk/files/
- ค้นหา SDK เวอร์ชัน 2.3.1 (SE หรือ Standard Edition) แล้วดาวน์โหลดไฟล์ ZIP สำหรับเวอร์ชันนั้น เช่น ดาวน์โหลด "unboundid-ldapsdk-2.3.1-se.zip"
- แยกไฟล์ JAR จากไฟล์ ZIP ของ SDK ดังที่แสดงในตัวอย่างต่อไปนี้
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
คำสั่งนี้จะแยกเฉพาะไฟล์ JAR ไปยังไดเรกทอรี ~/tmp โดยจะละเว้นโครงสร้างไดเรกทอรี ด้วย
-jแม้ว่าจะเป็นตัวเลือกก็ตาม - ในโหนด Message Processor แต่ละรายการ
ให้ทำดังนี้
- คัดลอกไฟล์ JAR ไปยังไดเรกทอรี
/opt/apigee/edge-gateway/lib/thirdpartyของ Message Processor - หากจำเป็น ให้สิทธิ์ผู้ใช้ Apigee ในไฟล์ JAR เพื่อให้ Message Processor เข้าถึงไฟล์ได้
- รีสตาร์ท Message Processor โดยใช้คำสั่งต่อไปนี้
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge จะเพิ่มไลบรารีของบุคคลที่สามทั้งหมดใน
/opt/apigee/edge-gateway/lib/thirdpartyไดเรกทอรีลงใน classpath - คัดลอกไฟล์ JAR ไปยังไดเรกทอรี
ตัวแปรโฟลว์
ต่อไปนี้เป็นตัวแปรนโยบาย LDAP ที่ SearchQuery ป้อนข้อมูล
|
ตัวแปร |
คำอธิบาย |
|---|---|
ldap.policyName.execution.success |
หลังจากดำเนินการนโยบายแล้ว ตัวแปรโฟลว์นี้จะมีค่า "true" หรือ "false" ขึ้นอยู่กับผลลัพธ์ |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
รูปแบบที่ยืดหยุ่นของตัวแปรนี้ โดยเฉพาะอย่างยิ่งดัชนี จะพิจารณาแอตทริบิวต์หลายรายการ รวมถึงแอตทริบิวต์ที่มีหลายค่า ดัชนีเป็นตัวเลขที่เริ่มต้นที่ 1 หากไม่ได้ระบุดัชนี ระบบจะใช้ดัชนีเริ่มต้นเป็น 1 หากนโยบายแสดงผลที่อยู่ โทรศัพท์ และอีเมล คุณสามารถดึงแอตทริบิวต์แรก และค่าโดยใช้ตัวแปรต่อไปนี้ ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email หากต้องการดึงแอตทริบิวต์ที่อยู่ที่ 3 ในผลการค้นหา ให้ใช้ตัวแปรต่อไปนี้ ldap.policyName.search.result[3].attribute.address หากแอตทริบิวต์มีหลายค่า (เช่น หากผู้ใช้มีอีเมลหลายรายการ ) คุณจะดึงอีเมลที่ 2 จากผลลัพธ์ได้ดังนี้ ldap.policyName.search.result.attribute.mail[2] |
รหัสข้อผิดพลาด
ข้อผิดพลาดที่แสดงผลจากนโยบาย Edge จะเป็นไปตามรูปแบบที่สอดคล้องกันตามที่อธิบายไว้ใน ข้อมูลอ้างอิงรหัสข้อผิดพลาด
นโยบายนี้ใช้รหัสข้อผิดพลาดต่อไปนี้
| รหัสข้อผิดพลาด | ข้อความ |
|---|---|
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. |