Hướng dẫn php rest api with api key - php rest api với api key

Thiết lập môi trường của bạn

Dự án ví dụ này được phát triển bằng Php 8, vì vậy bạn cần cài đặt này.

Tập hợp các biến môi trường của dự án

Bây giờ bạn nên có & nbsp; khóa API của ứng dụng của bạn.API Key.

Để chạy hướng dẫn ví dụ, bạn cần đặt các biến môi trường sau.

Tên biếnSự mô tả
CLIENT_ID Khóa API của ứng dụng của bạnAPI Key
Điểm cuối URL cho API bạn muốn gọi. Trong hướng dẫn này, chúng tôi yêu cầu điểm cuối hạn chế ứng dụng của Hello World Sandbox: //sandbox.api.service.nhs.uk/hello-world/hello/application
//sandbox.api.service.nhs.uk/hello-world/hello/application

Bạn có thể đặt các biến môi trường của mình trong một tệp có tên .ENV. Dự án này chứa một tệp env mẫu để sử dụng:.env. This project contains a sample env file to use:

  • Đổi tên env.sample thành .ENV và sửa đổi nó.env.sample to .env and modify it.
  • Nguồn nó bằng cách chạy nguồn .ENVsource .env

{

  "message": "Hello Application!"

}

Tôi đang làm việc với Phil Sturgeon REST_CONTROLLER cho Codeigniter để tạo API REST, cho đến nay tôi đã có thể tạo một thư viện đơn giản để tạo các khóa API cho người dùng. Vấn đề của tôi bây giờ là gửi khóa API đến API cho mỗi yêu cầu, cách tôi làm điều này mà không cần phải gửi thủ công cho mọi yêu cầu.

Hippietrail

15.1K18 Huy hiệu vàng96 Huy hiệu bạc149 Huy hiệu đồng18 gold badges96 silver badges149 bronze badges

Hỏi ngày 19 tháng 12 năm 2011 lúc 21:01Dec 19, 2011 at 21:01

Bạn nên xem xét việc ký yêu cầu. Một ví dụ tuyệt vời là API REST S3 của Amazon.

Tổng quan thực sự khá đơn giản. Người dùng có hai mẩu thông tin quan trọng để sử dụng API của bạn, ID người dùng công cộng và khóa API riêng tư. Họ gửi ID công khai với yêu cầu và sử dụng khóa riêng để ký vào yêu cầu. Máy chủ nhận tìm khóa của người dùng và quyết định xem yêu cầu đã ký có hợp lệ hay không. Dòng chảy là một cái gì đó như thế này:

  1. Người dùng tham gia dịch vụ của bạn và nhận ID người dùng [ví dụ: 123] và khóa API.
  2. Người dùng muốn đưa ra yêu cầu cho dịch vụ API của bạn để cập nhật địa chỉ email của họ, vì vậy họ cần gửi yêu cầu đến API của bạn, có lẽ đến /user/update?email=.
  3. Để có thể xác minh yêu cầu, người dùng sẽ thêm ID người dùng và chữ ký vào cuộc gọi, do đó cuộc gọi trở thành /user/update?email=&userid=123&sig=some_generated_stringsignature to the call, so the call becomes /user/update?email=&userid=123&sig=some_generated_string
  4. Máy chủ nhận được cuộc gọi, thấy rằng nó từ userid = 123 và tìm khóa API cho người dùng đó. Sau đó, nó sao chép các bước để tạo chữ ký từ dữ liệu và nếu chữ ký khớp với nhau, yêu cầu là hợp lệ.

Phương pháp này đảm bảo khóa API không bao giờ được gửi như một phần của giao tiếp.API key is never sent as part of the communication.

Hãy xem hàm Hash_hmac [] của PHP, nó phổ biến để gửi các yêu cầu đã ký. Nói chung, bạn bắt người dùng làm một cái gì đó như đặt tất cả các tham số vào một mảng, sắp xếp theo thứ tự bảng chữ cái, nối vào một chuỗi và sau đó hash_hmac chuỗi đó để lấy sig. Trong ví dụ này, bạn có thể làm:

$sig = hash_hmac["sha256",$params['email'].$params['userid'],$API_KEY]

Sau đó thêm $sig vào url còn lại như đã đề cập ở trên.

Đã trả lời ngày 19 tháng 12 năm 2011 lúc 21:39Dec 19, 2011 at 21:39

Zombatzombatzombat

91.2K24 Huy hiệu vàng156 Huy hiệu bạc164 Huy hiệu đồng24 gold badges156 silver badges164 bronze badges

10

Ý tưởng về phần còn lại là nó không có quốc tịch, vì vậy không có phiên hay gì. Nếu bạn muốn xác thực, thì đây là nơi các khóa đi vào và các khóa phải được thông qua cho mọi yêu cầu và mỗi yêu cầu xác thực người dùng [vì phần còn lại là không trạng thái, tôi đã đề cập đến điều đó?].

Có nhiều cách khác nhau bạn có thể vượt qua một chìa khóa. Bạn có thể truyền nó dưới dạng tham số [tức là //example.com/api/resource/id?key=API_KEY] hoặc bạn có thể vượt qua nó như một phần của tiêu đề HTTP. Tôi đã thấy API chỉ định bạn gửi tên người dùng của mình và khóa API là phần mật khẩu của tiêu đề ủy quyền truy cập cơ bản HTTP.

Một yêu cầu ví dụ:

Bài Viết Liên Quan

Chủ Đề