คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
อะไร
นโยบาย LDAP มีข้อกำหนดต่อไปนี้
- การตรวจสอบสิทธิ์: ระบบจะตรวจสอบข้อมูลเข้าสู่ระบบของผู้ใช้ที่ระบุในคำขอ
กับข้อมูลเข้าสู่ระบบในผู้ให้บริการ LDAP นโยบาย LDAP ช่วยให้คุณมีความยืดหยุ่นในการตรวจสอบสิทธิ์เป็นอย่างมาก โดยให้คุณใช้ค่า DN ใดก็ได้พร้อมกับรหัสผ่าน แม้ว่าค่า DN ที่ต้องการจะไม่ได้อยู่ในคำขอก็ตาม เช่น สมมติว่าคุณต้องใช้อีเมล / รหัสผ่านเพื่อ
การตรวจสอบสิทธิ์ ตัวเลือกที่เป็นไปได้มีดังนี้
- หากมีอีเมลในคำขอ คุณก็สามารถใช้อีเมลนั้นกับรหัสผ่านสำหรับการตรวจสอบสิทธิ์ LDAP ได้เลย
- หากไม่มีอีเมลในคำขอ แต่มีแอตทริบิวต์ DN อื่น (เช่น หมายเลขโทรศัพท์) คุณสามารถใช้หมายเลขโทรศัพท์เพื่อรับอีเมลที่เกี่ยวข้องจาก LDAP แล้วใช้อีเมล/ รหัสผ่านเพื่อตรวจสอบสิทธิ์
- การค้นหา Distinguished Name (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
|
องค์ประกอบ |
คำอธิบาย |
|---|---|
|
|
องค์ประกอบหลักที่มีแอตทริบิวต์ชื่อเพื่อให้คุณป้อนชื่อนโยบาย |
|
|
เมื่อใช้นโยบาย LDAP กับผู้ให้บริการ LDAP ที่กำหนดเอง (ไม่ได้มาจาก Apigee) ให้ระบุคลาสตัวเชื่อมต่อ LDAP ที่มีคุณสมบัติครบถ้วน
ซึ่งเป็นคลาสที่คุณใช้ |
|
|
ป้อนชื่อสภาพแวดล้อมของทรัพยากร LDAP ดูข้อมูลเพิ่มเติมได้ที่สร้าง แหล่งข้อมูล LDAP |
|
|
ระดับฐานของ LDAP ที่มีข้อมูลทั้งหมดของคุณ เช่น ใน
ผู้ให้บริการ LDAP ของ Apigee ข้อมูลทั้งหมดจะอยู่ภายใต้
|
|
|
|
|
การตรวจสอบสิทธิ์ |
|
|
|
องค์ประกอบหลักสำหรับลักษณะการทำงานของการตรวจสอบสิทธิ์ที่คุณใช้ |
|
|
องค์ประกอบว่างที่ใช้แอตทริบิวต์ต่อไปนี้อย่างใดอย่างหนึ่ง
หากไม่ได้ตรวจสอบสิทธิ์ด้วยชื่อผู้ใช้ หรือหากไม่ได้รวมชื่อผู้ใช้ไว้ในคำขอ คุณก็ไม่จำเป็นต้องรวมองค์ประกอบนี้ หากชื่อผู้ใช้อยู่ในคำขอ แต่คุณต้องการตรวจสอบสิทธิ์ผู้ใช้ด้วยแอตทริบิวต์ DN
อื่นที่ไม่ใช่ชื่อผู้ใช้ เช่น อีเมล ให้ใส่ |
|
|
องค์ประกอบว่างที่ใช้แอตทริบิวต์ต่อไปนี้อย่างใดอย่างหนึ่ง
|
|
|
หากต้องการตรวจสอบสิทธิ์โดยใช้แอตทริบิวต์ DN อื่นที่ไม่ใช่ชื่อผู้ใช้ เช่น อีเมล ให้กำหนดค่านโยบาย LDAP เพื่อรับแอตทริบิวต์ DN จากคำขอ (เช่น ชื่อผู้ใช้) ซึ่งใช้เพื่อระบุผู้ใช้ใน LDAP ดึงข้อมูลอีเมล และตรวจสอบสิทธิ์ ผู้ใช้ ตัวอย่างเช่น สมมติว่า LDAP กำหนดแอตทริบิวต์ "mail" สำหรับจัดเก็บอีเมล
|
|
ค้นหา |
|
|
|
องค์ประกอบหลักสำหรับลักษณะการค้นหาที่คุณใช้ |
|
|
การระบุผู้ใช้ด้วยข้อมูลเมตาในคำขอหรือการตอบกลับจะช่วยให้คุณใช้
องค์ประกอบนี้เพื่อเรียกแอตทริบิวต์ DN เพิ่มเติมสำหรับผู้ใช้จาก LDAP ได้ ตัวอย่างเช่น หากคำขอมีอีเมลของผู้ใช้ และ LDAP กำหนดแอตทริบิวต์
การค้นหานี้จะค้นหาอีเมลใน LDAP ที่ตรงกับอีเมลในคำขอ และตอนนี้ นโยบายสามารถเรียกแอตทริบิวต์ DN เพิ่มเติมสำหรับผู้ใช้รายนั้นได้ด้วยองค์ประกอบ Attributes |
|
|
ใช้องค์ประกอบ เช่น หลังจาก ค่าแอตทริบิวต์คือชื่อแอตทริบิวต์ DN ที่กำหนดไว้ใน LDAP <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
หมายเหตุการใช้งาน
Apigee Edge สำหรับ 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 สำหรับ Private Cloud
การใช้ผู้ให้บริการ LDAP ที่กำหนดเอง
Apigee Edge สำหรับ Private Cloud มาพร้อมกับผู้ให้บริการ LDAP ที่กำหนดค่าไว้แล้วเพื่อ โต้ตอบกับนโยบาย LDAP อย่างไรก็ตาม หากคุณใช้ผู้ให้บริการ LDAP ที่กำหนดเอง คุณต้องเปิดใช้ ผู้ให้บริการเพื่อรองรับนโยบาย LDAP หากต้องการทำสิ่งต่อไปนี้
- ในคลาสผู้ให้บริการ LDAP ให้ใช้
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(); } - ใน
<LdapConnectorClass>ของการกำหนดค่านโยบาย (ส่วนถัดไป) ให้เพิ่มชื่อคลาสที่มีคุณสมบัติครบถ้วนของผู้ให้บริการ LDAP ที่กำหนดเอง - ดาวน์โหลดไฟล์ custom-ldap.jar_.zip (คุณอาจต้องคลิกขวาแล้วเลือกบันทึกเป็น)
- แตกไฟล์
- เพิ่มไฟล์ custom-ldap.jar ลงในสภาพแวดล้อมและตรวจสอบว่าอยู่ใน classpath
- สร้างทรัพยากรสภาพแวดล้อมสำหรับผู้ให้บริการ LDAP คุณจะใช้ชื่อทรัพยากรสภาพแวดล้อม
ในองค์ประกอบ
<LdapResource>ของนโยบาย LDAP
การใช้ UnboundID LDAP SDK สำหรับ Java
คุณใช้ UnboundID LDAP SDK กับนโยบาย LDAP ได้ แต่ต้องดาวน์โหลดเวอร์ชัน 2.3.1 ก่อน แล้วเพิ่มลงในเส้นทางคลาสของ 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 เข้าถึงได้
- รีสตาร์ทตัวประมวลผลข้อความโดยทำดังนี้
/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 |
หลังจากที่ดำเนินการตามนโยบายแล้ว ตัวแปรโฟลว์นี้จะมีค่าเป็น "จริง" หรือ "เท็จ" ขึ้นอยู่กับผลลัพธ์ |
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. |