Bảo mật API bằng cách yêu cầu 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

Kiến thức bạn sẽ học được

Thông qua hướng dẫn này, bạn sẽ tìm hiểu cách:

  • Tạo proxy API yêu cầu phải có khoá API.
  • Thêm một sản phẩm API.
  • Thêm nhà phát triển và đăng ký ứng dụng.
  • Gọi API bằng khoá API.

Điều quan trọng là bạn phải bảo vệ API của mình khỏi bị truy cập trái phép. Một chiều để làm việc đó bằng khoá API (còn được gọi là khoá công khai, người tiêu dùng khoá hoặc khoá ứng dụng).

Khi một ứng dụng gửi yêu cầu đến API, ứng dụng phải cung cấp một khoá hợp lệ. Trong thời gian chạy, chính sách Xác minh khoá API kiểm tra để đảm bảo rằng khoá API đã cung cấp:

  • Hợp lệ
  • Chưa bị thu hồi
  • So khớp khoá API cho sản phẩm API hiển thị thông tin được yêu cầu tài nguyên

Nếu khoá hợp lệ, yêu cầu sẽ được cho phép. Nếu khoá không hợp lệ, dẫn đến lỗi uỷ quyền.

Trong hướng dẫn này, bạn sẽ tạo một proxy API yêu cầu một API hợp lệ để truy cập vào khoá đó.

Bạn cần có

  • Một tài khoản Apigee Edge. Nếu chưa có tài khoản, bạn có thể đăng ký có chỉ đường tại Tạo tài khoản Apigee Edge.
  • Một trình duyệt web để thực hiện lệnh gọi API.
  • (Đối với phần tín dụng bổ sung, không bắt buộc) cURL đã được cài đặt trên máy của bạn để thực hiện lệnh gọi API từ dòng lệnh.

Tạo proxy API

Giới thiệu về thuộc tính "mocktarget"

Dịch vụ mocktarget được lưu trữ tại Apigee và trả về giá trị đơn giản . Không cần khoá API hoặc mã truy cập. Trên thực tế, bạn có thể truy cập vào trên trình duyệt web. Hãy thử bằng cách nhấp vào nút sau:

http://mocktarget.apigee.net

Mục tiêu trả về Hello, Guest!. Sử dụng /help để xem trang trợ giúp về các tài nguyên API hiện có

  1. Chuyển đến https://apigee.com/edge rồi đăng nhập.
  2. Chuyển sang tổ chức bạn muốn bằng cách nhấp vào tên người dùng của bạn tại ở đầu thanh điều hướng bên để hiển thị trình đơn hồ sơ người dùng, sau đó chọn tổ chức trong danh sách.

    chọn tổ chức trong trình đơn hồ sơ người dùng
  3. Nhấp vào Proxy API trên trang đích để hiển thị API danh sách proxy.

    Trình đơn API Edge
  4. Nhấp vào + Proxy.
    Nút tạo proxy
  5. Trên trang Tạo proxy, hãy chọn Đảo ngược proxy (phổ biến nhất).
  6. Trên trang Proxy Details (Thông tin chi tiết về proxy), hãy định cấu hình proxy như sau:
    Trong trường này làm việc này
    Tên proxy Nhập: helloworld_apikey
    Đường dẫn cơ sở dự án

    Đổi thành: /helloapikey

    Đường dẫn cơ sở dự án là một phần của URL được dùng để tạo các yêu cầu đến proxy API.

    Lưu ý: Đối với các đề xuất của Apigee về việc tạo phiên bản API, xem Tạo phiên bản trong Thiết kế API web: Thiếu Đường liên kết đến sách điện tử.

    API hiện có

    Nhập: http://mocktarget.apigee.net

    Thao tác này xác định URL mục tiêu mà Apigee Edge gọi trên đến proxy API.

    Nội dung mô tả Nhập: hello world protected by API key
  7. Nhấp vào Tiếp theo.
  8. Trên trang Common policies (Chính sách chung), trong phần Security (Bảo mật): Uỷ quyền, chọn Khoá API rồi nhấp vào Tiếp theo. Chiến dịch này sẽ thêm hai chính sách vào proxy API của bạn.
  9. Trên trang Virtual Hosts (Máy chủ ảo), hãy chọn defaultbảo mật rồi nhấp vào Tiếp theo. Chọn mặc định sẽ cho phép bạn gọi API bằng http://. Chọn bảo mật, cho phép bạn gọi API bằng https://.
  10. Trên trang Tóm tắt, hãy nhớ triển khai thử nghiệm được chọn, rồi nhấp vào Tạo và triển khai.
  11. Bạn sẽ thấy một xác nhận rằng proxy API mới và một API sản phẩm đã được tạo thành công và proxy API đã được triển khai môi trường thử nghiệm của bạn.
  12. Nhấp vào Chỉnh sửa proxy để hiển thị trang Tổng quan cho Proxy API.

Xem chính sách

  1. Trong trình chỉnh sửa proxy API, hãy nhấp vào thẻ Phát triển. Bạn sẽ thấy rằng hai chính sách đã được thêm vào luồng yêu cầu của proxy API:
    • Xác minh khoá API: Kiểm tra lệnh gọi API để đảm bảo lệnh gọi API hợp lệ Có khoá API (được gửi dưới dạng tham số truy vấn).
    • Xoá khoá API Tham số truy vấn: Chính sách AttributionMessage sẽ xoá khoá API sau khi được kiểm tra để khoá này không bị truyền xung quanh và lộ ra một cách không cần thiết.
  2. Nhấp vào biểu tượng chính sách Xác minh khoá API trong chế độ xem luồng để xem cấu hình XML của chính sách trong chế độ xem mã thấp hơn. Chiến lược phát hành đĩa đơn Phần tử <APIKey> cho chính sách biết vị trí tìm khoá API khi thực hiện lệnh gọi. Theo mặc định, hệ thống sẽ tìm dưới dạng tham số truy vấn có tên là apikey trong HTTP yêu cầu:

    <APIKey ref="request.queryparam.apikey" />
    

    Tên apikey là tuỳ ý và có thể là bất kỳ thuộc tính nào có chứa khoá API.

Thử gọi API

Ở bước này, bạn sẽ thực hiện lệnh gọi API thành công trực tiếp đến mục tiêu , thì bạn sẽ thực hiện lệnh gọi không thành công đến proxy API để xem đang được các chính sách bảo vệ.

  1. Thành công

    Trong trình duyệt web, hãy truy cập vào địa chỉ sau. Đây là dịch vụ đích mà proxy API được định cấu hình để chuyển tiếp đưa ra yêu cầu, nhưng tạm thời bạn sẽ ngay lập tức đạt được kết quả:

    http://mocktarget.apigee.net
    

    Bạn sẽ nhận được phản hồi thành công sau: Hello, Guest!

  2. Không thành công

    Bây giờ, hãy thử gọi proxy API của bạn:

    http://ORG_NAME-test.apigee.net/helloapikey
    

    thay thế ORG_NAME bằng tên của Sắp xếp biên.

    Nếu không có chính sách Xác minh khoá API, lệnh gọi này sẽ cung cấp cho bạn thông tin tương tự nội dung phản hồi cho cuộc gọi trước đó. Nhưng trong trường hợp này, bạn sẽ nhận được phản hồi lỗi sau:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    tức là bạn không truyền khoá API hợp lệ (như tham số truy vấn).

Trong các bước tiếp theo, bạn sẽ thêm một sản phẩm API.

Thêm một sản phẩm API

Cách thêm một sản phẩm API bằng giao diện người dùng Apigee:

  1. Chọn Xuất bản > Sản phẩm API.
  2. Nhấp vào +Sản phẩm API.
  3. Nhập Product details (Chi tiết sản phẩm) cho sản phẩm API.

    Trường Mô tả
    Tên Tên nội bộ của sản phẩm API. Không nên hãy chỉ định ký tự đặc biệt trong tên.
    Lưu ý: Bạn không thể chỉnh sửa tên sau khi tạo sản phẩm API. Cho ví dụ: helloworld_apikey-Product.
    Tên hiển thị Tên hiển thị của sản phẩm API. Tên hiển thị được dùng trong giao diện người dùng và bạn có thể chỉnh sửa nó bất cứ lúc nào. Nếu không được chỉ định, Giá trị tên sẽ được dùng. Trường này được tự động điền bằng cách sử dụng Giá trị tên; bạn có thể chỉnh sửa hoặc xoá nội dung. Màn hình tên có thể bao gồm các ký tự đặc biệt. Ví dụ: helloworld_apikey-Product.
    Mô tả Nội dung mô tả về sản phẩm API. Ví dụ: Test product for tutorial.
    Môi trường Những môi trường mà sản phẩm API sẽ cho phép truy cập. Ví dụ: test hoặc prod.
    Quyền truy cập Chọn Công khai.
    Tự động phê duyệt yêu cầu truy cập Bật tính năng tự động phê duyệt các yêu cầu khoá cho API này sản phẩm từ bất kỳ ứng dụng nào.
    Hạn mức Bỏ qua đối với hướng dẫn này.
    Phạm vi OAuth được phép Bỏ qua đối với hướng dẫn này.
  4. Trong phần tài nguyên API, hãy chọn proxy API bạn vừa đã tạo. Ví dụ: helloworld_apikey.
  5. Nhấp vào Thêm.
  6. Trong mục Paths (Đường dẫn), hãy thêm đường dẫn "/".
  7. Nhấp vào Thêm.
  8. Nhấp vào Lưu.

Trong các bước tiếp theo, bạn sẽ nhận được khoá API cần thiết.

Thêm nhà phát triển và ứng dụng vào tổ chức

Tiếp theo, chúng ta sẽ mô phỏng quy trình làm việc của nhà phát triển đăng ký sử dụng API của bạn. Nhà phát triển sẽ có một hoặc nhiều ứng dụng gọi API của bạn, và mỗi ứng dụng sẽ nhận được một khoá API duy nhất. Điều này mang lại cho bạn, nhà cung cấp API, nhiều kiểm soát chi tiết hơn quyền truy cập vào API của bạn và báo cáo chi tiết hơn về Lưu lượng truy cập API theo ứng dụng.

Tạo nhà phát triển

Cách tạo nhà phát triển:

  1. Chọn Xuất bản > Developers trong trình đơn.
  2. Nhấp vào + Nhà phát triển.
  3. Nhập nội dung sau vào cửa sổ Nhà phát triển mới:

    Trong trường này enter
    Tên Keyser
    Họ Soze
    Tên người dùng keyser
    Email keyser@example.com
  4. Nhấp vào Tạo.

Đăng ký ứng dụng

Cách đăng ký ứng dụng của nhà phát triển:

  1. Chọn Xuất bản > Ứng dụng.
  2. Nhấp vào + Ứng dụng.
  3. Nhập nội dung sau vào cửa sổ New App (Ứng dụng mới):

    p
    Trong trường này làm việc này
    Name (Tên) và Display Name (Tên hiển thị) Nhập: keyser_app
    Công ty / Nhà phát triển Chọn: Developer
    Nhà phát triển Chọn: Keyser Soze (keyser@example.com)
    URL gọi lạiGhi chú Để trống
  4. Trong phần Thông tin đăng nhập, hãy chọn Không bao giờ trong phần Trình đơn Hết hạn. Thông tin đăng nhập của ứng dụng này sẽ không bao giờ hết hạn.
  5. Trong phần Sản phẩm, hãy nhấp vào Thêm sản phẩm.
  6. Chọn helloworld_apikey-Product.
  7. Nhấp vào Thêm.
  8. Nhấp vào Tạo ở phía trên, phía bên phải mục Chi tiết ứng dụng để lưu công việc của bạn.

Lấy khoá API

Cách lấy khoá API:

  1. Trên trang Ứng dụng (Xuất bản > Ứng dụng), hãy nhấp vào keyser_app.
  2. Trên trang keyser_app, hãy nhấp vào Show (Hiển thị) bên cạnh Key (Khoá) trong phần Thông tin đăng nhập. Trong phần Product (Sản phẩm), lưu ý rằng khoá này được liên kết với helloworld_apikey

    của Google.
  3. Chọn và sao chép Khoá. Bạn sẽ dùng địa chỉ này trong bước tiếp theo.

Gọi API bằng khoá

Giờ đây, khi đã có khoá API, bạn có thể sử dụng khoá đó để gọi proxy API. Vào cảnh các tính năng sau trên trình duyệt web. Thay thế tên tổ chức trong Edge của bạn cho ORG_NAME và khoá API cho API_KEY bên dưới. Đảm bảo không có dấu cách nào thừa trong tham số truy vấn.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

Hiện tại, khi gọi đến proxy API, bạn sẽ nhận được phản hồi sau: Hello, Guest!

Xin chúc mừng! Bạn đã tạo proxy API và bảo vệ proxy đó bằng bắt buộc phải có khoá API hợp lệ trong lệnh gọi.

Lưu ý rằng nhìn chung, bạn không nên chuyển khoá API dưới dạng tham số truy vấn. Bạn nên cân nhắc hãy chuyển mã đó vào tiêu đề HTTP.

Phương pháp hay nhất: Chuyển khoá vào tiêu đề HTTP

Ở bước này, bạn sẽ sửa đổi proxy để tìm khoá API trong có tên là x-apikey.

  1. Chỉnh sửa proxy API. Chọn Phát triển > Proxy API > helloworld_apikey rồi chuyển đến chế độ xem Develop (Phát triển).
  2. Chọn chính sách Xác minh khoá API rồi sửa đổi tệp XML của chính sách để thông báo chính sách để xem trong header thay vì trong queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. Lưu proxy API để triển khai thay đổi.
  4. Thực hiện lệnh gọi API sau đây bằng cách sử dụng cURL để truyền khoá API dưới dạng một có tên là x-apikey. Đừng quên thay thế tên tổ chức của mình.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

Xin lưu ý rằng để hoàn tất đầy đủ thay đổi này, bạn cũng cần phải định cấu hình Chính sách AttributionMessage để xoá tiêu đề thay vì tham số truy vấn. Ví dụ:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

Chủ đề có liên quan

Dưới đây là một số chủ đề có liên quan trực tiếp đến hướng dẫn này:

Cụ thể, việc bảo vệ API bằng khoá API mới chỉ là một phần của câu chuyện. Thông thường, Biện pháp bảo vệ API bao gồm cả biện pháp bảo mật bổ sung như OAuth.

OAuth là giao thức mở, tóm lại là trao đổi thông tin đăng nhập (như tên người dùng và mật khẩu) để mã truy cập. Mã truy cập là các chuỗi dài, ngẫu nhiên có thể được chuyển xung quanh một thông báo quy trình, thậm chí từ ứng dụng này sang ứng dụng khác mà không làm ảnh hưởng đến thông tin đăng nhập ban đầu. Quyền truy cập mã thông báo thường có thời gian hoạt động ngắn, vì vậy các mã mới luôn được tạo.