Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Nội dung
Chính sách LDAP cung cấp:
- Xác thực: Thông tin xác thực của người dùng được cung cấp trong yêu cầu đã được xác thực
với thông tin xác thực trong trình cung cấp LDAP. Chính sách LDAP cho phép bạn linh hoạt hơn với
xác thực, cho phép bạn sử dụng bất kỳ giá trị DN nào cùng với mật khẩu, ngay cả khi giá trị DN đó
mà mình muốn không có trong yêu cầu. Ví dụ: giả sử bạn cần sử dụng email / mật khẩu cho
xác thực. Bạn có thể chọn các phương án sau:
- Nếu email có trong yêu cầu, bạn chỉ cần sử dụng email đó với mật khẩu cho Giao thức truy cập thư mục hạng nhẹ (LDAP) xác thực.
- Nếu email không có trong yêu cầu nhưng có một thuộc tính DN khác (chẳng hạn như số điện thoại), bạn có thể sử dụng số điện thoại để nhận email tương ứng từ Giao thức truy cập thư mục hạng nhẹ (LDAP), sau đó sử dụng email / để xác thực.
- Tìm kiếm tên phân biệt (DN): Ngoài phương pháp xác thực, bạn có thể bạn cũng có thể sử dụng Chính sách LDAP để xác định thuộc tính người dùng trong yêu cầu, chẳng hạn như email và thực hiện truy vấn để truy xuất các thuộc tính DN khác từ LDAP cho người dùng đó. DN được truy xuất là được lưu trữ trong biến.
Sử dụng chính sách LDAP khi quyền truy cập vào các tài nguyên được bảo vệ phải được giới hạn ở những người dùng trong LDAP nhà cung cấp—chẳng hạn như người dùng quản trị, người dùng tổ chức và nhà phát triển—đặc biệt khi Quyền truy cập vào mã thông báo OAuth là không cần thiết hoặc quá nặng. Chính sách này cũng được thiết kế để truy xuất siêu dữ liệu tên miền để sử dụng trong luồng proxy API.
Ví dụ: bạn có thể yêu cầu một lệnh gọi API chỉ thực thi khi người dùng được xác thực thành công chống lại LDAP; rồi truy xuất các thuộc tính DN (Tên miền) cho người dùng nếu muốn xác thực thành công.
Để biết thêm thông tin, hãy xem:
- Quản lý chính sách mật khẩu LDAP mặc định để quản lý API
- "Thông tin quan trọng về chính sách mật khẩu của bạn" trong Cộng đồng Apigee
Mẫu
Xác thực tên người dùng/mật khẩu
<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>
Mẫu này cung cấp phương thức xác thực dựa vào nhà cung cấp LDAP. Chính sách chuyển tên người dùng và mật khẩu từ yêu cầu đến LDAP để xác thực.
Xác thực thuộc tính doanh nghiệp dựa trên nền tảng kỹ thuật số
<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>
Chính sách này sẽ truy cập DN của người dùng với email trong tiêu đề yêu cầu, sau đó xác thực người dùng dựa vào LDAP bằng mật khẩu được cung cấp trong phần đầu yêu cầu.
Đang tìm kiếm 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>
Chính sách này tham chiếu đến một nhà cung cấp LDAP tuỳ chỉnh. Email này sử dụng địa chỉ email nêu trong yêu cầu để xác định người dùng, sau đó truy xuất địa chỉ, điện thoại và chức danh của người dùng từ Giao thức truy cập thư mục hạng nhẹ (LDAP). Các thuộc tính DN đã truy xuất sẽ được lưu trữ trong một biến. Xem phần "Chính sách cụ thể biến".
Để tìm kiếm Giao thức truy cập thư mục hạng nhẹ (LDAP) và truy xuất các thuộc tính DN, yêu cầu phải bao gồm quản trị viên thông tin xác thực.
Tham chiếu phần tử
Sau đây là nội dung mô tả về các phần tử và thuộc tính của Chính sách LDAP.
Phần tử |
Mô tả |
---|---|
|
Phần tử mẹ có thuộc tính tên để bạn nhập tên chính sách. |
|
Khi sử dụng Chính sách LDAP với một giao thức truy cập thư mục hạng nhẹ (LDAP) tuỳ chỉnh
(không do Apigee cung cấp), hãy chỉ định lớp trình kết nối LDAP đủ điều kiện.
Đây là lớp mà bạn đã triển khai |
|
Nhập tên môi trường của tài nguyên LDAP. Hãy xem bài viết Tạo Tài nguyên LDAP để biết thêm thông tin. |
|
Cấp cơ sở của Giao thức truy cập thư mục hạng nhẹ (LDAP) mà tất cả dữ liệu của bạn tồn tại. Ví dụ: trong
Nhà cung cấp LDAP của Apigee, tất cả dữ liệu đều thuộc
|
|
|
Xác thực |
|
|
Phần tử mẹ cho hành vi xác thực mà bạn triển khai. |
|
Phần tử trống có một trong các thuộc tính sau:
Nếu bạn không xác thực bằng tên người dùng hoặc nếu tên người dùng không có trong bạn không cần đưa vào phần tử này. Nếu tên người dùng có trong yêu cầu, nhưng bạn muốn xác thực người dùng bằng thuộc tính DN
ngoài tên người dùng (chẳng hạn như email), hãy bao gồm |
|
Phần tử trống có một trong các thuộc tính sau:
|
|
Nếu bạn muốn xác thực bằng thuộc tính DN không phải tên người dùng, chẳng hạn như email, định cấu hình chính sách LDAP để lấy thuộc tính DN từ yêu cầu (chẳng hạn như tên người dùng), mã này được sử dụng để nhận dạng người dùng trong LDAP, truy xuất email và xác thực người dùng. Ví dụ: giả sử LDAP xác định "thư" để lưu trữ địa chỉ email:
|
Tìm kiếm |
|
|
Phần tử mẹ cho hành vi tìm kiếm mà bạn triển khai. |
|
Bằng cách xác định người dùng bằng siêu dữ liệu trong yêu cầu hoặc phản hồi, bạn có thể sử dụng
để truy xuất các thuộc tính DN bổ sung cho người dùng từ LDAP. Ví dụ: nếu
yêu cầu chứa email người dùng và LDAP của bạn xác định thuộc tính
Truy vấn này tìm kiếm LDAP để tìm email khớp với email trong yêu cầu và chính sách này hiện có thể truy xuất các thuộc tính doanh nghiệp dựa trên nền tảng kỹ thuật số bổ sung cho người dùng đó bằng các thuộc tính . |
|
Sử dụng một hoặc nhiều phần tử Ví dụ: sau khi Giá trị thuộc tính là tên thuộc tính DN được xác định trong Giao thức truy cập thư mục hạng nhẹ (LDAP). <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
Lưu ý về cách sử dụng
Apigee Edge dành cho Cloud riêng tư giúp bạn tận dụng nhà cung cấp LDAP trong các lệnh gọi API. Sử dụng Giao thức truy cập thư mục hạng nhẹ (LDAP) Chính sách, các ứng dụng có thể xác thực thông tin xác thực chống lại người dùng được lưu trữ trong LDAP và bạn có thể truy xuất tên phân biệt (DN) từ LDAP—siêu dữ liệu hoặc các thuộc tính được liên kết với từng người dùng, chẳng hạn như email, địa chỉ và số điện thoại. DN trả về được lưu trữ trong một biến cho để proxy API tiếp tục sử dụng.
Tạo tài nguyên LDAP
Chính sách LDAP sử dụng tài nguyên LDAP mà bạn tạo trong Apigee Edge. Tài nguyên LDAP cung cấp thông tin kết nối với kho lưu trữ LDAP.
Để tạo và quản lý các tài nguyên LDAP, hãy sử dụng API và tải trọng sau đây:
API
Tạo (POST
) một danh sách hoặc tài nguyên LDAP (GET
) tất cả các tài nguyên LDAP:
/v1/organizations/org_name/environments/environment/ldapresources
Xem thông tin chi tiết về (GET
), Cập nhật (POST
) và Xoá (DELETE
) tài nguyên LDAP:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
Dung lượng
Dưới đây là một tải trọng XML mẫu kèm theo nhận xét về việc sử dụng.
<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>
ví dụ về curl: Tạo tài nguyên LDAP
Ví dụ sau đây sẽ tạo một tài nguyên LDAP có tên 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>'
Mã phản hồi
Sau đây là các mã phản hồi HTML mà chính sách trả về cho trạng thái thành công hoặc không thành công:
- Thành công: 200
- Không thành công: 401
Sử dụng nhà cung cấp LDAP tuỳ chỉnh trong Edge cho Đám mây riêng tư
Sử dụng thuộc tính tuỳ chỉnh nhà cung cấp LDAP
Apigee Edge cho Cloud riêng tư đi kèm với một nhà cung cấp Giao thức truy cập thư mục hạng nhẹ (LDAP) đã được định cấu hình để tương tác với Chính sách LDAP. Tuy nhiên, nếu bạn đang sử dụng một nhà cung cấp LDAP tuỳ chỉnh, bạn phải bật nhà cung cấp hỗ trợ Chính sách LDAP. Để thực hiện việc này:
- Trong lớp trình cung cấp LDAP, hãy triển khai giao diện
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(); }
- Trong
<LdapConnectorClass>
của phần cấu hình chính sách (các phần tiếp theo), hãy thêm tên lớp đủ điều kiện cho nhà cung cấp LDAP tuỳ chỉnh của bạn. - Tải tệp này xuống: custom-ldap.jar_.zip. (Bạn có thể phải nhấp chuột phải rồi chọn Lưu dưới dạng.)
- Giải nén.
- Thêm tệp custom-ldap.jar vào môi trường của bạn và đảm bảo rằng tệp này có trong classpath của bạn.
- Tạo tài nguyên môi trường cho nhà cung cấp LDAP. Bạn sẽ sử dụng tài nguyên môi trường
tên trong phần tử
<LdapResource>
của chính sách Giao thức truy cập thư mục hạng nhẹ (LDAP).
Sử dụng SDK LDAP không liên kết cho Java
Bạn có thể sử dụng SDK LDAP UnboundID cùng với chính sách LDAP, nhưng trước tiên bạn phải tải phiên bản xuống 2.3.1 và thêm vào từng đường dẫn lớp ( classpath) của Bộ xử lý tin nhắn.
Cách sử dụng SDK LDAP UnboundID bằng chính sách LDAP:
- Mở trình duyệt và chuyển đến kho lưu trữ tệp Sourceforge cho SDK LDAP UnboundID:
https://sourceforge.net/projects/ldap-sdk/files/
- Tìm phiên bản 2.3.1 (SE hoặc Standard Edition) của SDK và tải tệp ZIP xuống cho phiên bản đó. Ví dụ: tải "unboundid-ldapsdk-2.3.1-se.zip".
- Trích xuất tệp JAR từ tệp ZIP SDK, như trong ví dụ sau:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
Lệnh này chỉ trích xuất tệp JAR vào thư mục ~/tmp. Thao tác này sẽ xoá thư mục cấu trúc với
-j
, mặc dù điều này là không bắt buộc. - Trên mỗi nút Trình xử lý thông báo:
- Sao chép tệp JAR vào thư của Trình xử lý thư
Thư mục
/opt/apigee/edge-gateway/lib/thirdparty
. - Nếu cần, hãy cấp quyền cho người dùng Apigee đối với tệp JAR để trình xử lý tin nhắn có thể truy cập vào tệp đó.
- Khởi động lại Trình xử lý thư:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge sẽ thêm tất cả thư viện của bên thứ ba vào Thư mục
/opt/apigee/edge-gateway/lib/thirdparty
vào đường dẫn lớp. - Sao chép tệp JAR vào thư của Trình xử lý thư
Thư mục
Biến luồng
Sau đây là các biến Chính sách LDAP do SearchQuery
điền sẵn.
Biến |
Mô tả |
---|---|
ldap.policyName.execution.success |
Sau khi chính sách được thực thi, biến luồng này sẽ chứa giá trị "true" hoặc "false", tuỳ thuộc vào kết quả. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
Định dạng linh hoạt của biến này, chỉ mục trong cụ thể: tính đến nhiều thuộc tính, cũng như các thuộc tính có nhiều giá trị. Chỉ mục là một số bắt đầu từ 1. Nếu không có số chỉ mục nào được cung cấp, giá trị mặc định số chỉ mục là 1. Nếu chính sách trả về địa chỉ, số điện thoại và email, bạn có thể truy xuất thuộc tính đầu tiên và giá trị bằng cách sử dụng các biến sau: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email Nếu bạn muốn truy xuất thuộc tính địa chỉ thứ ba trong kết quả tìm kiếm, bạn sẽ dùng: ldap.policyName.search.result[3].attribute.address Nếu một thuộc tính có nhiều giá trị (ví dụ: nếu người dùng có nhiều email ), bạn sẽ truy xuất địa chỉ email thứ hai từ kết quả như sau: ldap.policyName.search.result.attribute.mail[2] |
Mã lỗi
Các lỗi do chính sách của Edge trả về sẽ có một định dạng nhất quán như mô tả trong phần Tài liệu tham khảo về mã lỗi.
Chính sách này sử dụng những mã lỗi sau:
Mã lỗi | Thông điệp |
---|---|
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. |