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 phương thức xác thực khoá API cho một API bằng cách đính kèm chính sách về 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 ứ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ì hệ thống sẽ gửi ra lỗi và yêu cầu sẽ bị từ chối. Khoá API có thể nằm trong 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 dưới đây xác định vị trí khoá dự kiến dưới dạng tham số truy vấn có tên apikey. Một yêu cầu thành công phải hiển thị khoá API dưới dạng 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ể tìm thấy tài liệu đầy đủ về loại chính sách này trong chủ đề tài liệu tham khảo chính sách, chính sách Xác minh khoá API.

Các proxy API sẽ tự động truyền tất cả tiêu đề HTTP và tham số truy vấn có trong yêu cầu. Do đó, sau khi xác minh khoá API, bạn nên xoá khoá đó khỏi thông báo để khoá API không được gửi qua đường dây đến dịch vụ phụ trợ. Bạn có thể thực hiện việc đó bằng cách sử dụng chính sách thuộc loại AttributionMessage 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

Bạn phải đính kèm các chính sách này với Luồng proxy API ở 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à proxy API 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 này 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, 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 

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

Ví dụ: một yêu cầu không bao gồm 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 một 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á 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 sẽ 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 lỗi uỷ quyền:

$ 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, 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 tổ chức:

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