Khóa API là gì? [đóng cửa]


109

Tôi thấy từ này trong hầu hết các ứng dụng dịch vụ chéo ngày nay.

Chính xác thì khóa API là gì và công dụng của nó là gì?

Ngoài ra, sự khác biệt giữa khóa API công khai và riêng tư là gì.

Câu trả lời:


111

Khóa API được sử dụng để làm gì "chính xác" phụ thuộc rất nhiều vào người phát hành nó và những dịch vụ mà nó được sử dụng. Tuy nhiên, nói chung, khóa API là tên được đặt cho một số dạng mã thông báo bí mật được gửi cùng với các yêu cầu dịch vụ web (hoặc tương tự) để xác định nguồn gốc của yêu cầu. Khóa có thể được bao gồm trong một số thông báo về nội dung yêu cầu để xác minh thêm nguồn gốc và ngăn chặn việc giả mạo các giá trị.

Thông thường, nếu bạn có thể xác định nguồn của một yêu cầu một cách tích cực, nó hoạt động như một hình thức xác thực, có thể dẫn đến kiểm soát truy cập. Ví dụ: bạn có thể hạn chế quyền truy cập vào các hành động API nhất định dựa trên ai đang thực hiện yêu cầu. Đối với các công ty kiếm tiền từ việc bán các dịch vụ như vậy, đó cũng là một cách để theo dõi ai đang sử dụng thiết bị cho mục đích thanh toán. Hơn nữa, bằng cách chặn khóa, bạn có thể ngăn chặn một phần lạm dụng trong trường hợp khối lượng yêu cầu quá cao.

Nói chung, nếu bạn có cả khóa API công khai và riêng tư, thì điều đó cho thấy rằng bản thân các khóa đó là một cặp khóa công khai / riêng tư truyền thống được sử dụng trong một số dạng mật mã không đối xứng hoặc có liên quan, ký kỹ thuật số. Đây là những kỹ thuật an toàn hơn để xác định tích cực nguồn của yêu cầu và ngoài ra, để bảo vệ nội dung của yêu cầu khỏi bị theo dõi (ngoài việc giả mạo).


12
Tốt! Tuy nhiên, theo kinh nghiệm hơi hạn chế của tôi, sự phân biệt công khai / riêng tư không liên quan gì đến tiền điện tử khóa công khai. Các khóa "công khai" mà tôi đã thấy thường là "access lite" - nói cách khác, một khóa mà bạn có thể phân phối để cấp cho các bên thứ ba quyền truy cập vào dữ liệu không nhạy cảm, mà không phải cung cấp chìa khóa cho vương quốc.
timdev 21/09/09

2
@Rob +1 để có câu trả lời chi tiết @tim +1 cho người có suy nghĩ chín chắn!
OrangeRind 21/09/09

@tim - đã đồng ý. Tôi nghĩ rằng cách tiếp cận phổ biến hơn mà tôi đã thấy là có một khóa thông báo riêng.
Rob

24

Nói chung chung:

Một khóa API chỉ đơn giản là xác định bạn.

Nếu có sự phân biệt công khai / riêng tư, thì khóa công khai là khóa mà bạn có thể phân phối cho người khác, để cho phép họ lấy một số thông tin con về bạn từ api. Khóa riêng tư chỉ dành cho bạn sử dụng và cung cấp quyền truy cập vào tất cả dữ liệu của bạn.


hầu hết thời gian chúng trông giống như băm. quan sát của tôi có đúng không?
OrangeRind 21/09/09

Có thể được tạo theo cách bạn muốn, miễn là chúng là duy nhất. Hàm băm của một số dữ liệu có vẻ như là một cách hợp lý để tạo một dữ liệu, vâng.
Matthew Scharley 21/09/09

Vâng, chúng trông giống như băm. Rốt cuộc, bạn không muốn chúng dễ đoán.
timdev 21/09/09

1
Nhiều hơn hoặc ít hơn - hầu hết các khóa API tiêu chuẩn không có thật được tạo bằng cách băm một số giá trị giả ngẫu nhiên và thực hiện một số mã hóa văn bản thuần túy tiêu chuẩn trên kết quả, ví dụ: base16, base64, v.v.
Rob

18

Có vẻ như nhiều người sử dụng khóa API như một giải pháp bảo mật. Điểm mấu chốt là: Không bao giờ coi các khóa API là bí mật . Trên https hoặc không, bất kỳ ai có thể đọc yêu cầu đều có thể thấy khóa API và có thể thực hiện bất kỳ lệnh gọi nào họ muốn. Khóa API chỉ nên là mã định danh 'người dùng' vì nó không phải là giải pháp bảo mật hoàn chỉnh ngay cả khi được sử dụng với ssl.

Mô tả tốt hơn là trong liên kết Eugene Osovetsky: Khi làm việc với hầu hết các API, tại sao chúng yêu cầu hai loại xác thực, đó là khóa và bí mật? Hoặc kiểm tra http://nordicapis.com/why-api-keys-are-not-enough/


2
Như bạn có thể thấy, đây là một câu hỏi cũ và có thể bị coi là "quá rộng" (hoặc có thể là "lạc đề") theo tiêu chuẩn Stack Overflow hiện đại. Những câu hỏi như vậy có xu hướng thu hút các câu trả lời có ý kiến, thường bị phản đối và / hoặc bị xóa. Tránh xa những câu hỏi như vậy thường là cách hành động tốt nhất. Bạn có thể xem trung tâm trợ giúp để biết thêm thông tin.
Dev-iL

10

Khóa API là một giá trị duy nhất được chỉ định cho người dùng dịch vụ này khi anh ta được chấp nhận là người dùng dịch vụ.

Dịch vụ duy trì tất cả các khóa đã phát hành và kiểm tra chúng theo từng yêu cầu.

Bằng cách xem khóa được cung cấp theo yêu cầu, dịch vụ sẽ kiểm tra xem đó có phải là khóa hợp lệ hay không để quyết định cấp quyền truy cập cho người dùng hay không.


vậy còn công cộng và riêng tư thì sao?
OrangeRind 21/09/09

1
Các khóa công khai và riêng tư đến từ miền mã hóa và có liên quan đến mã hóa bất đối xứng. Tôi chưa bao giờ nghe các thuật ngữ này được sử dụng theo nghĩa của khóa API.

2

Khóa API chỉ là một cách xác thực người dùng dịch vụ web.


1

Hãy nghĩ theo cách này, "Khóa API công khai" tương tự như tên người dùng mà cơ sở dữ liệu của bạn đang sử dụng làm thông tin đăng nhập vào máy chủ xác minh. Khi đó "Khóa API riêng" sẽ tương tự như mật khẩu. Bởi trang web / databse sử dụng phương pháp này, bảo mật được duy trì trên bên thứ ba / máy chủ xác minh để xác thực yêu cầu đăng hoặc chỉnh sửa trang web / cơ sở dữ liệu của bạn.

Chuỗi API chỉ là URL của thông tin đăng nhập cho trang web / cơ sở dữ liệu của bạn để liên hệ với máy chủ xác minh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.