API anahtarı nedir? [kapalı]


109

Bu kelimeyi bugünlerde neredeyse her çapraz hizmet uygulamasında görüyorum.

Bir API anahtarı tam olarak nedir ve kullanımları nelerdir?

Ayrıca, genel ve özel API anahtarları arasındaki fark nedir?

Yanıtlar:


111

Bir API anahtarının "tam olarak" ne için kullanıldığı, büyük ölçüde onu kimin verdiğine ve hangi hizmetler için kullanıldığına bağlıdır. Bununla birlikte, genel olarak bir API anahtarı, isteğin kaynağını belirlemek için web hizmeti (veya benzer) talepleriyle birlikte gönderilen bir tür gizli jetona verilen addır. Anahtar, kaynağı daha fazla doğrulamak ve değerlerle oynamayı önlemek için talep içeriğinin bazı özetlerine dahil edilebilir.

Tipik olarak, bir isteğin kaynağını pozitif olarak belirleyebilirseniz, bu, erişim kontrolüne yol açabilecek bir kimlik doğrulama biçimi olarak işlev görür. Örneğin, isteği kimin gerçekleştirdiğine bağlı olarak belirli API eylemlerine erişimi kısıtlayabilirsiniz. Bu tür hizmetleri satarak para kazanan şirketler için, bu aynı zamanda faturalandırma amacıyla kimin bu şeyi kullandığını izlemenin bir yoludur. Dahası, bir anahtarı bloke ederek çok yüksek talep hacimlerinde kötüye kullanımı kısmen önleyebilirsiniz.

Genel olarak, hem genel hem de özel bir API anahtarınız varsa, anahtarların kendilerinin bir tür asimetrik kriptografide veya ilgili dijital imzalamada kullanılan geleneksel bir genel / özel anahtar çifti olduğunu önerir . Bunlar, bir talebin kaynağını pozitif olarak tanımlamak ve ayrıca talebin içeriğini gözetlemeden korumak için (kurcalanmaya ek olarak) daha güvenli tekniklerdir.


12
Peki koy! Bununla birlikte, biraz sınırlı deneyimime göre, genel / özel ayrımının açık anahtarlı kripto ile hiçbir ilgisi yok. Gördüğüm "genel" anahtarlar tipik olarak "erişim lite" dir - başka bir deyişle, krallığın anahtarlarını vermeden üçüncü taraflara hassas olmayan verilere erişim sağlamak için dağıtabileceğiniz bir anahtardır.
timdev

2
Ayrıntılı cevap için @Rob +1 @tim +1 aferthought için!
OrangeRind

@tim - kabul etti. Sanırım gördüğüm daha yaygın yaklaşım, özel bir özet anahtarına sahip olmak.
Rob

24

Genel olarak konuşursak:

Bir API anahtarı sizi basitçe tanımlar.

Genel / özel bir ayrım varsa, açık anahtar, sizin hakkınızda api'den bazı bilgi alt kümelerini almalarına izin vermek için başkalarına dağıtabileceğiniz bir anahtardır. Özel anahtar yalnızca sizin kullanımınız içindir ve tüm verilerinize erişim sağlar.


çoğu zaman karma gibi görünürler. gözlemim doğru mu?
OrangeRind

Benzersiz oldukları sürece, istediğiniz gibi oluşturulabilir. Bazı verilerin karması, bir tane oluşturmanın makul bir yolu gibi görünüyor, evet.
Matthew Scharley

Evet, karmalara benziyorlar. Sonuçta, tahmin etmenin kolay olmasını istemezsiniz.
timdev

1
Az ya da çok - çoğu bataklık standart API anahtarı, bazı sahte rasgele değerlere hashing uygulanarak ve sonuç üzerinde bazı standart düz metin kodlamaları gerçekleştirilerek üretilir, ör. Base16, base64 vb.
Rob

18

Görünüşe göre birçok kişi API anahtarlarını bir güvenlik çözümü olarak kullanıyor. Sonuç olarak: API anahtarlarını asla gizli olmadığı gibi ele almayın . Https'de olsun veya olmasın, isteği okuyabilen herkes API anahtarını görebilir ve istediği çağrıyı yapabilir. Bir API Anahtarı, ssl ile kullanıldığında bile tam bir güvenlik çözümü olmadığı için bir 'kullanıcı' tanımlayıcı olmalıdır.

Daha iyi açıklama Eugene Osovetsky'de şu bağlantıdadır: Çoğu API ile çalışırken, neden iki tür kimlik doğrulamaya ihtiyaç duyuyorlar: bir anahtar ve bir sır? Veya http://nordicapis.com/why-api-keys-are-not-enough/ adresini kontrol edin.


2
Gördüğünüz gibi, bu eski bir sorudur ve modern Stack Overflow standartlarına göre muhtemelen "çok geniş" (veya belki "konu dışı") olarak kabul edilebilir. Bu tür sorular, genellikle olumsuz oylanan ve / veya silinen, fikir sahibi yanıtları çekme eğilimindedir. Bu tür sorulardan uzak durmak genellikle en iyi eylem şeklidir. Daha fazla bilgi için yardım merkezine bakabilirsiniz .
Dev-iL

10

Bir API anahtarı, hizmetin bir kullanıcısı olarak kabul edildiğinde bu hizmetin bir kullanıcısına atanan benzersiz bir değerdir.

Hizmet, verilen tüm anahtarları korur ve her talepte kontrol eder.

Talepte sağlanan anahtara bakarak bir hizmet, bir kullanıcıya erişim izni verip vermemeye karar vermek için bunun geçerli bir anahtar olup olmadığını kontrol eder.


peki ya kamusal ve özel olan?
OrangeRind

1
Genel ve özel anahtarlar, şifreleme alanından gelir ve asimetrik şifreleme ile bir ilgisi vardır. API anahtarları anlamında bu terimlerin kullanıldığını hiç duymadım.

2

API anahtarları, web hizmetleri kullanıcılarının kimliğini doğrulamanın yalnızca bir yoludur.


1

Şöyle düşünün, "Genel API Anahtarı", veritabanınızın bir doğrulama sunucusunda oturum açma olarak kullandığı bir kullanıcı adına benzer. "Özel API Anahtarı" daha sonra şifreye benzer olacaktır. Bu yöntemi kullanan site / veri tabanı ile, sitenizi / veri tabanınızı yayınlama veya düzenleme talebinin doğrulanması için üçüncü taraf / doğrulama sunucusunda güvenlik korunur.

API dizesi, sitenizin / veritabanınızın doğrulama sunucusuyla iletişim kurması için yalnızca oturum açma URL'sidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.