Thiết lập tính năng xác thực khoá API

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Bạn có thể thiết lập quy trình xác thực khoá API cho một API bằng cách đính kèm một chính sách thuộc loại Xác minh khoá API. Chế độ cài đặt bắt buộc duy nhất cho chính sách Xác minh khoá API là vị trí dự kiến của khoá API trong yêu cầu của ứng dụng. Proxy API sẽ kiểm tra vị trí mà bạn chỉ định và trích xuất khoá API. Nếu khoá API không có ở vị trí dự kiến, thì sẽ xảy ra lỗi và yêu cầu sẽ bị từ chối. Khoá API có thể nằm trong một tham số truy vấn, tham số biểu mẫu hoặc tiêu đề HTTP.

Ví dụ: cấu hình chính sách bên dưới xác định vị trí khoá dự kiến là một tham số truy vấn có tên apikey. Một yêu cầu thành công phải trình bày khoá API dưới dạng một tham số truy vấn được thêm vào yêu cầu, ví dụ: ?apikey=Y7yeiuhcbKJHD790.

Để xác minh khoá API, hãy tạo chính sách sau:

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

Bạn có thể đính kèm chính sách này vào bất kỳ API nào mà bạn cần bảo vệ.

Bạn có thể xem tài liệu đầy đủ về loại chính sách này trong chủ đề tham khảo về chính sách, chính sách Xác minh khoá API.

Các proxy API tự động chuyển tiếp tất cả tiêu đề HTTP và tham số truy vấn có trên yêu cầu. Do đó, sau khi khoá API được xác minh, bạn nên loại bỏ khoá này khỏi thông báo để khoá API không được gửi qua mạng đến dịch vụ phụ trợ. Bạn có thể thực hiện việc đó bằng chính sách thuộc loại AssignMessage như sau:

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

Tệp đính kèm chính sách

Các chính sách phải được đính kèm vào một Luồng proxy API dưới dạng các Bước xử lý. Bằng cách áp dụng chính sách này cho yêu cầu PreFlow, khoá API sẽ được xác minh trên mọi yêu cầu mà API proxy nhận được từ một ứng dụng khách. Sau khi xác minh, khoá API sẽ bị xoá khỏi yêu cầu gửi đi.

Đính kèm các chính sách vào ProxyEndpoint của API proxy cần được bảo vệ như sau:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

Sau khi bạn đính kèm chính sách, hãy triển khai proxy API.

Gửi yêu cầu bằng khoá API hợp lệ

Là quản trị viên trong tổ chức, bạn có thể truy xuất khoá API của bất kỳ ứng dụng nào theo cách sau:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

Hồ sơ ứng dụng được trả về cho lệnh gọi này cung cấp khoá của người dùng: (khoá API) và mã thông báo bí mật. Giá trị khoá của người dùng là giá trị bạn dùng cho khoá API trong yêu cầu của bạn đối với API được bảo vệ.

Ví dụ: yêu cầu không có khoá API sẽ dẫn đến lỗi uỷ quyền.

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

Thông báo lỗi cho biết chính sách đã kiểm tra khoá API nhưng không tìm thấy khoá hợp lệ:

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

Khi khoá của người dùng: cho ứng dụng được đưa vào dưới dạng một tham số truy vấn, kết quả dự kiến là uỷ quyền thành công:

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

Kết quả dự kiến là phản hồi thành công từ dịch vụ thời tiết.

Việc sửa đổi giá trị của khoá API trong yêu cầu sẽ dẫn đến lỗi uỷ quyền:

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Kết quả:

OAuth Failure : Consumer Key is Invalid

Xin lưu ý rằng với tư cách là quản trị viên của tổ chức, bạn có thể truy xuất khoá người dùng cho mọi ứng dụng đã đăng ký trong một tổ chức:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password