Apa itu kunci API? [Tutup]

109

Saya melihat kata ini di hampir setiap aplikasi lintas layanan hari ini.

Apa sebenarnya kunci API itu dan apa kegunaannya?

Juga, apa perbedaan antara kunci API publik dan pribadi.

OrangeRind
sumber

Jawaban:

111

Untuk apa "sebenarnya" kunci API digunakan sangat bergantung pada siapa yang menerbitkannya, dan untuk layanan apa kunci itu digunakan. Namun, pada umumnya, kunci API adalah nama yang diberikan untuk beberapa bentuk token rahasia yang dikirimkan bersama permintaan layanan web (atau serupa) untuk mengidentifikasi asal permintaan. Kuncinya dapat disertakan dalam beberapa intisari konten permintaan untuk lebih memverifikasi keaslian dan untuk mencegah perusakan nilai.

Biasanya, jika Anda dapat mengidentifikasi sumber permintaan secara positif, ini bertindak sebagai bentuk otentikasi, yang dapat mengarah ke kontrol akses. Misalnya, Anda dapat membatasi akses ke tindakan API tertentu berdasarkan siapa yang melakukan permintaan. Untuk perusahaan yang menghasilkan uang dari menjual layanan semacam itu, ini juga merupakan cara melacak siapa yang menggunakan barang untuk tujuan penagihan. Lebih jauh lagi, dengan memblokir kunci, Anda dapat mencegah penyalahgunaan sebagian jika volume permintaan terlalu tinggi.

Secara umum, jika Anda memiliki kunci API publik dan privat, maka itu menunjukkan bahwa kunci itu sendiri adalah pasangan kunci publik / pribadi tradisional yang digunakan dalam beberapa bentuk kriptografi asimetris , atau penandatanganan digital terkait. Ini adalah teknik yang lebih aman untuk mengidentifikasi sumber permintaan secara positif, dan sebagai tambahan, untuk melindungi konten permintaan dari pengintaian (selain gangguan).

rampok
sumber
12
Bagus! Namun, dalam pengalaman saya yang agak terbatas, perbedaan publik / pribadi tidak ada hubungannya dengan crypto kunci publik. Kunci "publik" yang pernah saya lihat biasanya adalah "akses lite" - dengan kata lain, kunci yang dapat Anda distribusikan untuk memberi pihak ketiga akses ke data non-sensitif, tanpa memberikan kunci ke kerajaan.
timdev
2
@Rob +1 untuk jawaban rinci @tim +1 untuk renungan!
OrangeRind
@tim - setuju. Saya pikir pendekatan yang lebih umum yang pernah saya lihat adalah memiliki kunci intisari pribadi.
Rob
24

Secara umum:

Kunci API hanya mengidentifikasi Anda.

Jika ada perbedaan publik / privat, maka kunci publik adalah salah satu yang dapat Anda distribusikan kepada orang lain, untuk memungkinkan mereka mendapatkan beberapa subset informasi tentang Anda dari api. Kunci pribadi hanya untuk Anda gunakan, dan memberikan akses ke semua data Anda.

timdev
sumber
sering kali mereka terlihat seperti hash. apakah pengamatan saya benar?
OrangeRind
Dapat dibuat sesuka Anda, asalkan unik. Sebuah hash dari beberapa data tampaknya merupakan cara yang masuk akal untuk membuatnya, ya.
Matthew Scharley
Ya, mereka terlihat seperti hash. Bagaimanapun, Anda tidak ingin mereka mudah ditebak.
timdev
1
Lebih atau kurang - sebagian besar kunci API standar rawa dihasilkan dengan melakukan hashing beberapa nilai pseudorandom dan melakukan beberapa pengkodean teks biasa standar pada hasilnya, misalnya base16, base64 dll.
Rob
18

Sepertinya banyak orang yang menggunakan kunci API sebagai solusi keamanan. Intinya adalah: Jangan pernah memperlakukan kunci API sebagai rahasia, itu bukan rahasia . Di https atau tidak, siapa pun yang dapat membaca permintaan tersebut dapat melihat kunci API dan dapat melakukan panggilan apa pun yang mereka inginkan. Kunci API harus hanya sebagai pengenal 'pengguna' karena ini bukan solusi keamanan lengkap bahkan ketika digunakan dengan ssl.

Deskripsi yang lebih baik ada dalam tautan Eugene Osovetsky ke: Ketika bekerja dengan sebagian besar API, mengapa mereka memerlukan dua jenis otentikasi, yaitu kunci dan rahasia? Atau periksa http://nordicapis.com/why-api-keys-are-not-enough/

timandtheocean
sumber
2
Seperti yang Anda lihat, ini adalah pertanyaan lama, dan mungkin dianggap "terlalu luas" (atau mungkin "di luar topik") menurut standar Stack Overflow modern. Pertanyaan semacam itu cenderung menarik jawaban yang memiliki opini, yang biasanya diberi suara negatif dan / atau dihapus. Menjauh dari pertanyaan semacam itu biasanya merupakan tindakan terbaik. Anda dapat melihat pusat bantuan untuk informasi lebih lanjut.
Dev-iL
10

Kunci API adalah nilai unik yang ditetapkan ke pengguna layanan ini ketika dia diterima sebagai pengguna layanan.

Layanan ini menyimpan semua kunci yang dikeluarkan dan memeriksanya di setiap permintaan.

Dengan melihat kunci yang diberikan pada permintaan tersebut, layanan memeriksa apakah itu kunci yang valid untuk memutuskan apakah akan memberikan akses kepada pengguna atau tidak.


sumber
jadi bagaimana dengan yang publik dan pribadi?
OrangeRind
1
Kunci publik dan privat berasal dari domain enkripsi dan ada hubungannya dengan enkripsi asimetris. Saya belum pernah mendengar istilah ini digunakan dalam arti kunci API.
2

Kunci API hanyalah salah satu cara untuk mengautentikasi pengguna layanan web.

GG.
sumber
1

Anggap saja seperti ini, "Kunci API Publik" mirip dengan nama pengguna yang digunakan database Anda sebagai login ke server verifikasi. Kemudian "Kunci API Pribadi" akan serupa dengan sandi. Oleh situs / databse yang menggunakan metode ini, keamanan di server pihak ketiga / verifikasi untuk permintaan autentik untuk memposting atau mengedit situs / database Anda.

String API hanyalah URL login untuk situs / database Anda untuk menghubungi server verifikasi.

Eugene Grant-Sinclair
sumber