Api Key Mantığı
-
Merhaba müritler. Geliştirdiğim bir api var basitce veritabanı işlemleri yapmaya falan yarıyor. Ben bu apiyi karşı tarafa vereceğim o da uygulamasına gömecek kullanıcı o uygulamayı kullanırken benim apime istek yapacak. Bu kısımda bu uygulamaya özgü bir key yapmak istiyorum. Kullandığımız apilerdeki key mantığı gibi. İstediğim de limit koyabileceğim v.s. şekilde. Şu anki apiler bu işi nasıl yapıyor mantığı nedir. Yani key'i veritabanına kaydedip ordan mı sorguluyor her istek olduğunda, perfonmans olarak düşüşe sebeb olmaz mı bu? Bana bu konunun algoritmasında/mantığında yardımcı olabilir misiniz?
-
Genelde token içerisine claim ekleniyor expired date vs yazılıyor. Bu key de db ye girmeden redis vb yapılarda tutuluyor. Sen db de de tutabilirsin. Daha sonra istersen bu keyi silebilir engelleyebilirsin de.
Jwt.io bakmanı tavsiye ederim
-
MhmdAlmz bunu yazdı
Genelde token içerisine claim ekleniyor expired date vs yazılıyor. Bu key de db ye girmeden redis vb yapılarda tutuluyor. Sen db de de tutabilirsin. Daha sonra istersen bu keyi silebilir engelleyebilirsin de.
Jwt.io bakmanı tavsiye ederim
hocam burada token'dan ziyade, API key, secret key kavramlari var. Bunlari redis gibi gecici bir yerde tutmak dogru olmaz. Ayrica bu iki key de degismiyor kullanici revoke etmedikce (eger hakki varsa), yani expired olayi yok.
hangi dille yapacaksin belirtmemissin.. ama asp.net core icin buraya bakabilirsin
https://www.youtube.com/watch?v=Zo3T_See7iI
-
unbalanced bunu yazdıMhmdAlmz bunu yazdı
Genelde token içerisine claim ekleniyor expired date vs yazılıyor. Bu key de db ye girmeden redis vb yapılarda tutuluyor. Sen db de de tutabilirsin. Daha sonra istersen bu keyi silebilir engelleyebilirsin de.
Jwt.io bakmanı tavsiye ederim
hocam burada token'dan ziyade, API key, secret key kavramlari var. Bunlari redis gibi gecici bir yerde tutmak dogru olmaz. Ayrica bu iki key de degismiyor kullanici revoke etmedikce (eger hakki varsa), yani expired olayi yok.
hangi dille yapacaksin belirtmemissin.. ama asp.net core icin buraya bakabilirsin
https://www.youtube.com/watch?v=Zo3T_See7iI
Ben nasıl yapılacağının mantığını bilmediğim için mantığını sormuştum o yüzden dil belirtmedim hocam. PHP kullanacağım.
-
auth basic kullanabilirsin hocam
base64(kullanıcıadı : şifre)
kullanıcı adı ve şifreyi birleştirip araya : atıp base 64 le şifrelemesini isteyebilirsin
-
unbalanced bunu yazdıMhmdAlmz bunu yazdı
Genelde token içerisine claim ekleniyor expired date vs yazılıyor. Bu key de db ye girmeden redis vb yapılarda tutuluyor. Sen db de de tutabilirsin. Daha sonra istersen bu keyi silebilir engelleyebilirsin de.
Jwt.io bakmanı tavsiye ederim
hocam burada token'dan ziyade, API key, secret key kavramlari var. Bunlari redis gibi gecici bir yerde tutmak dogru olmaz. Ayrica bu iki key de degismiyor kullanici revoke etmedikce (eger hakki varsa), yani expired olayi yok.
hangi dille yapacaksin belirtmemissin.. ama asp.net core icin buraya bakabilirsin
Abi haklısın fakat arkadaşın senin bahsettiğin gibi bir private key yada secret keyden bahsettiğini düşünmüyorum. Auth işleminden bahsettiğini düşündüm. Öyle hissettim yani :D Kavramları karıştırdığını düşünüyorum arkadaş sadece dışarıdaki herkesin apiyi kullanmasını istemiyor bunu da ya private bir key verip config dosyasına koyarsın yada api Auth işlemi yaparsın :/ Ben Api Auth işleminden bahsettim. Private key ele geçirilirse patlar sistem çünkü.
-
Selam, bunun bir çok yolu var ama senin yazdığın tam olarak nedir? nasıl çalışıyor? (restful, companent, web service)
Senin yazdığın apinin dış dünya ile bağlantısı var mı? O zaman işin kolay olur çünkü kontrolu senin serverin yapar ama güvenlik nedeniyle genelde db core bağlantılı api'ler dışarıya izoledir. Anladığım kadarıyla bu api müşteri serverında olacak ve ona ait olacak, zaman ve sorgu limiti yok(?)
Eğer dış dünya ile iletişimi yoksa; En basitinden DSA veya RSA ile kullanarak, müşteriye özel bilgileri (ip adresi, mac adresi vb...) ile 1 kb.lık bir imza dosyası yaratırsın. Senin api (içinde de public key ile) bu imza doğruluğunu belirli zaman aralıklarında kontrol eder.
Dahada kolay olanı; müşteri bilgilerini (ip+mac+server adı vb...) bilgileri kullanarak bir hmac SHA2 hash oluştur ve bunu ister txt ister db kaydet. Senin api yine belirli aralıklarla müşteri server bilgilerini alarak aynı hash oluşturup, senin verdiğin hash ile karşılaştırsın.
Tabii kodlarının native derlenmiş olması lazım. Kodlar ortadaysa normal bir yazılımcı 1 satır kod ekleyerek kontrol fonksiyonunu her zaman true döndürebilecektir.
Yazarken hazır framework kullandıysan, bunun için hazır kutuphane ve fonksiyonlar %99 framework içerisinde vardır.