คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
นโยบาย 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 ที่กำหนดเอง
provider (ไม่ได้ให้บริการโดย Apigee) ให้ระบุคลาสเครื่องมือเชื่อมต่อ LDAP ที่มีคุณสมบัติครบถ้วน
ซึ่งเป็นชั้นเรียนที่คุณใช้ |
|
ป้อนชื่อสภาพแวดล้อมของทรัพยากร LDAP โปรดดูสร้าง แหล่งข้อมูล LDAP สำหรับข้อมูลเพิ่มเติม |
|
ระดับฐานของ LDAP ที่มีข้อมูลทั้งหมดของคุณอยู่ ตัวอย่างเช่น ใน
ผู้ให้บริการ LDAP ของ Apigee ข้อมูลทั้งหมดอยู่ภายใต้
|
|
|
การตรวจสอบสิทธิ์ |
|
|
อีลิเมนต์ระดับบนสำหรับลักษณะการตรวจสอบสิทธิ์ที่คุณใช้ |
|
องค์ประกอบว่างที่ใช้แอตทริบิวต์ต่อไปนี้
หากคุณไม่ได้มีการตรวจสอบสิทธิ์ด้วยชื่อผู้ใช้ หรือหากชื่อผู้ใช้ไม่อยู่ใน คุณไม่จำเป็นต้องรวมองค์ประกอบนี้ไว้ หากมีชื่อผู้ใช้ในคำขอ แต่คุณต้องการตรวจสอบสิทธิ์ผู้ใช้ด้วยแอตทริบิวต์ DN
นอกเหนือจากชื่อผู้ใช้ เช่น อีเมล ให้ใส่ |
|
องค์ประกอบว่างที่ใช้แอตทริบิวต์ต่อไปนี้
|
|
หากต้องการตรวจสอบสิทธิ์โดยใช้แอตทริบิวต์ DN อื่นที่ไม่ใช่ชื่อผู้ใช้ เช่น อีเมล กำหนดค่านโยบาย LDAP เพื่อรับแอตทริบิวต์ DN จากคำขอ (เช่น ชื่อผู้ใช้) ซึ่งใช้เพื่อระบุผู้ใช้ใน LDAP เรียกข้อมูลอีเมล และตรวจสอบสิทธิ์ ผู้ใช้ ตัวอย่างเช่น สมมติว่า LDAP กำหนด "mail" สำหรับจัดเก็บที่อยู่อีเมล:
|
ค้นหา |
|
|
องค์ประกอบระดับบนสุดสำหรับพฤติกรรมการค้นหาที่คุณใช้ |
|
เมื่อระบุผู้ใช้ด้วยข้อมูลเมตาในคำขอหรือการตอบกลับ คุณจะสามารถใช้
เพื่อเรียกแอตทริบิวต์ DN เพิ่มเติมสำหรับผู้ใช้จาก LDAP ตัวอย่างเช่น หาก
คำขอจะมีอีเมลของผู้ใช้ และ LDAP ของคุณกำหนดแอตทริบิวต์
คำค้นหานี้จะค้นหา LDAP เพื่อหาอีเมลที่ตรงกับอีเมลในคำขอ และ ขณะนี้นโยบายสามารถดึงข้อมูลแอตทริบิวต์ DN เพิ่มเติมสำหรับผู้ใช้ที่มีแอตทริบิวต์ |
|
ใช้องค์ประกอบ ตัวอย่างเช่น หลังจากที่ ค่าแอตทริบิวต์คือชื่อแอตทริบิวต์ 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 หากต้องการทำสิ่งต่อไปนี้
- ใช้อินเทอร์เฟซ
ExternalLdapConProvider
ในชั้นเรียนผู้ให้บริการ LDAPpublic 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
การใช้ LDAP SDK แบบไม่มีขอบเขตสำหรับ Java
คุณจะใช้ LDAP SDK แบบ UnboundID กับนโยบาย LDAP ได้ แต่ต้องดาวน์โหลดเวอร์ชันก่อน 2.3.1 และเพิ่มลงในเส้นทางคลาสของผู้ประมวลผลข้อความแต่ละเส้นทาง
วิธีใช้ LDAP SDK แบบ UnboundID กับนโยบาย LDAP
- เปิดเบราว์เซอร์และไปที่ที่เก็บไฟล์ Sourceforge สำหรับ LDAP SDK แบบ UnboundID ดังนี้
https://sourceforge.net/projects/ldap-sdk/files/
- ค้นหา SDK เวอร์ชัน 2.3.1 (SE หรือ Standard Edition) และดาวน์โหลดไฟล์ ZIP สำหรับเวอร์ชันนั้น ตัวอย่างเช่น ดาวน์โหลด "unboundid-LDAPsdk-2.3.1-se.zip"
- แยกไฟล์ JAR จากไฟล์ SDK ในรูปแบบ ZIP ตามตัวอย่างต่อไปนี้
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
แม้ว่านี่จะเป็นตัวเลือกที่ไม่บังคับก็ตาม - ในแต่ละโหนดตัวประมวลผลข้อความ
- คัดลอกไฟล์ JAR ไปยังส่วนของ
ไดเรกทอรี
/opt/apigee/edge-gateway/lib/thirdparty
- หากจำเป็น โปรดให้สิทธิ์ผู้ใช้ Apigee ในไฟล์ JAR เพื่อให้ผู้ประมวลผลข้อความเข้าถึงไฟล์ได้
- รีสตาร์ทโปรแกรมประมวลผลข้อความ
/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 ถ้าต้องการเรียกแอตทริบิวต์ที่อยู่ที่สามในผลการค้นหา คุณควรใช้ขั้นตอนต่อไปนี้ ldap.policyName.search.result[3].attribute.address หากแอตทริบิวต์มีหลายค่า (เช่น หากผู้ใช้มีอีเมลหลายฉบับ ที่อยู่) คุณจะต้องเรียกคืนที่อยู่อีเมลที่สองจากผลการค้นหาดังนี้ 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. |