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 =)
0