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.
Chuyển đến Tài liệu về Apigee X.
thông tin

Bạn có thể thiết lập tính năng xác thực khoá API cho một API bằng cách đính kèm chính sách loại Xác minh khoá API. Chiến lược phát hành đĩa đơn chế độ cài đặt bắt buộc 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 khách hà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ì hệ thống sẽ báo lỗi và yêu cầu bị từ chối. Khoá API có thể nằm trong một tham số truy vấn, một tham số biểu mẫu hoặc một giao thức HTTP .

Ví dụ: cấu hình chính sách bên dưới xác định vị trí khoá dự kiến dưới dạng một truy vấn tham số có tên apikey. Yêu cầu thành công phải hiển thị khoá API dưới dạng 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>

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

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

Proxy API tự động chuyển tất cả tiêu đề HTTP và tham số truy vấn có sẵn theo yêu cầu. Do đó, sau khi khoá API đã được xác minh, bạn nên xoá khoá đó khỏi thông báo để khoá API không được gửi qua dây đến dịch vụ phụ trợ. Bạn có thể làm được bằng cách sử dụng chính sách loại AllowedMessage 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 này phải được đính kèm vào một Luồng proxy API ở dạng Bước xử lý. Bằng cách áp dụng chính sách với yêu cầu PreFlow, các khoá API được xác minh trên mọi yêu cầu mà proxy API nhận được 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 proxy API 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 này, hãy triển khai proxy API.

Gửi yêu cầu có 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 như sau:

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

Cấu hình ứng dụng được trả về cho lệnh gọi này sẽ cung cấp khoá người dùng (khoá API) và thông tin bí mật. Giá trị khoá người tiêu dùng là giá trị mà bạn sử dụng cho khoá API trong yêu cầu gửi đến lớp được bảo vệ API.

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

$ 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á API hợp lệ khoá:

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

Khi khoá người dùng cho ứng dụng được đưa vào dưới dạng 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ả mong đợi là một 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 việc uỷ quyền lỗi:

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

Kết quả bằng:

OAuth Failure : Consumer Key is Invalid

Hãy nhớ rằng, là quản trị viên của tổ chức, bạn có thể truy xuất khoá người dùng cho bất kỳ ứng dụng nào đã đă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