Nasıl API anahtarlarını yönetirim

5 Cevap php

Ben bir API bina ve API erişimi yönetmek için oauth düşündüğünü bakıyor, ama ne yapıyorum işletmelerin kendi sitelerine içine dahil etmek veri erişim sağlayan bir B2B sistemi fazla ediyorum. Ben başında herhangi B2C olmaz.

Yani oauth benim için doğru aracı gibi görünmüyor, ben bir anahtar tabanlı bir sistem kurulmasına ilişkin kaynaklar arıyor oldum, ama bir şey rastlamak değil.

Is something available out there already? Is it best to just create a hash of some user submitted data or something like that?

5 Cevap

Ne gerek Sadece bir UUID bir UUID ya da belki bir karma kullanmak ... benzersiz kullanıcıyı tanımlayan sadece bir şeydir.

Sadece güvenli olmayan kanal üzerinden geçirerek eğer HTTP benzer kimlik auth sindirmek güvence bazı yöntem uygulamak gerekebilir, bu kimliği güvenli bir kanal üzerinden geçirilir emin olun.

Hemen hemen herhangi bir Web 2.0 sitesi / hizmet bir göz atın. Onlar tüm auth yapıyor ve API anahtarlarını yönetme değişen derecelerde var. Vs Flickr, Twitter Github,

Web api yılların dünyasında, gereksinimlerine bağlı olarak, ortaklar / geliştiricilere bir API anahtarı (tanımlama) veren ve onlar aramaları (doğrulama) oturum gerektiren oldukça standart. Imzaları spec için birçok yolu vardır. Oldukça yaygın olanı bu gün; tüm çağrı params'ı almak, bir zaman damgası (+ / - 5 dk kıpırdatmak), bir paylaşılan gizli, ve SHA-1 veya MD5 (SHA-1 daha iyi) kullanarak karma.

Siz kendiniz uygulamak ya da bir ortak bulurum ya sizin için bunu yapmak için (birkaç vardır).

Mesajdaki bir "parola" da dahil olmak üzere kesinlikle daha iyi - Burada önerilmektedir genel yaklaşımı (bir API anahtarı ve şimdiki zamanı içeren bir karma kullanmak için) tüm iyi.

Ancak, HMAC denilen bu "maş" işlemi yapmanın bir kripto standart bir yolu yoktur. Güvenli / sağlam / daha standart bir şey istiyorsanız iyi bakarak değer.

Daha sonra bir limitted kullanım oturum anahtarı (sadece örneğin bir API, üreten bir başlangıç ​​isteğini imzalamak için tüm istekleri (hesaplama pahalı olabilir) ya imzalamak veya kullanmak için bir dijital sertifika kullanmak - Sonunda güvenlik seçeneklerinden "altın standart" Açıkçası orada 60 dakika sonra bir bitiş).

Alternatif ulaşım katmanı 2-yollu SSL kullanabilirsiniz ve sadece uygulama / API içinde bu güven.

Gerçekten istediğiniz kadar güvenli bağlıdır ...:]

Bu API anahtarları guessable olan bir durum yaratmak gibi ben sadece kullanıcı gönderilen verileri kullanmak olmaz. Genel olarak, ben kullanıcı tarafından oluşturulan bazı verileri almak, ve sonra ben yapmazsam SHA-1 veya bir şey kullanarak, belki gösterimini değiştirmek nispeten benzersiz (yani, mevcut sistem zamanı) ve karma bazı verisi ile birleştirmek Açıkçası bir SHA-1 hash olması, ve o kullanmak istediğiniz anahtarı olarak.