boktan yazdığımın farkındayım.

api'lere daha önce çok bağlandım ancak hiç api yazmadım. haliyle authentication hakkında çok bilgim yok. biraz bilgi edinebilmek için kendime basit bir api yazmak ve üstünde oynamak istiyorum.

sormak istediğim soru ise olabilecek en beginner soru;
api tarafında çalışır bir access token nasıl üretiliyor? neye göre hangi şartlara göre?

kullanıcı bilgileri ile login oluyor.
ben ona access token tanımlıyorum --> bu access token neye göre tanımlanıyor, neler içeriyor. veritabanında kullanıcı bölümünde "access_token" sütunu açıp kalan işlemleri o eşleşmeye görem i yapmak gerekiyor.
php tarafta access token'ı neye göre ne amaçla refresh etmek gerekiyor ve kullanıcıdan gelen token'ı neye göre eşleştiriyoruz.

vs. vs.

en basit seviye anlatabilriseniz veya bir ders önerebilirseniz baya makbule geçer.

 

ben kendi yazdığım web servis'i anlatayım umarım faydası olur.

bağlanmak isteyen her kullanıcı için Api Key ve Secret Key adında 2 alan oluşturuyorum. Api key'i header a eklerken, secret key'i ise post etmek istediğim verileri şifrelemek için kullanıyorum.

Örnek olarak: post edeceğim veriler;

{ id: 5, text: xxxxxxx } olsun bu veriye ek olarak o anki zamanın timestamp'ini (şiömdilik 12345678 olsun) da verilere ekliyor ve http_build_query ile "id=5&text=xxxxxxx&date=12345678" olarak çevirip daha sonra bana verilen secret_keyi kullanıp sha256 ile şifreliyorum ve oluşan şifrelenmiş eriyi signature değişkeni ile post edeceğim verilere ekliyorum. son durumda post ettiğim veriler şunlar oluyor;

{ id: 5, text: xxxxxxx, date: 12345678, signature: xyxyxyxyxyxyx }

server tarafında ise gelen post isteğindeki api key i alıp veritabanında var mı diye kontrol ediyorum. eğer var ise gelen post verileri içerisinde signature hariç diğerlerini veritabanında api key in sahip olduğu secret key ile şifreliyorum. daha sonra da post edilen signature ve benim oluşturduğum signature aynı mı diye bakıyorum. aynıysa bir problem yok, değilse hata mesajı gönderiyorum.

yukarı yazmayı unuttum ancak date i kullanmamın amacı da date eğer şuanki zamandan örnek vermek gerekirse 4 saat daha önce oluşturulmuş ise yine tekrar hata döndürüyorum. tarihi geçmiş daha önce oluşturulan bir post isteği olabilir diye.

umarım anlatabilmişimdir =)

amour fou
1

mobil görünümden çık