Asp.Net Web API – Token Based Authentication Refresh Token Kullanımı

Bunlar da hoşunuza gidebilir...

23 Cevaplar

  1. ilhan dedi ki:

    Refrefh Token nın gerekliğini tam anlayamadım. Örnek : Access Token ın Expire olunca ben (client : örneğin Native App) bu Access Token ile Authorization Server a gidip , orada bunu kontrol edip expire oldu ise yenisini almamda nasıl bir sakınca olabilir ?

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhaba, bu durumlar genelde access token’ın snifflenmesine engel olunmak için tercih edilmektedir. Long-lived access token’lar tercih edilmemektedir. Belirli bir expire date verirsiniz, token sniff’lense dahi o expire date’inde sona erecektir. Refresh token’la ise genelde sadece bir kerelik yeni bir token daha üretilmektedir. Sizin bahsetmiş olduğunuz çözüm ise sonsuz bir session işlemi gibi.

  2. Ahmet Sönmez dedi ki:

    Merhaba,
    kullanıcı login olduktan sonra yapacağı istekler için sadece token gönderiyor. DB ile bir bağlantısı kalmıyor. Peki farklı yerlerden aynı kullanıcı ile login olduğunda bunu nerede yakalayarak iki kullanıcıdan bir tanesini sistem dışı bırakabiliriz?

    teşekkürler.

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhabalar, ilgili kullanıcıya token generate ederken claims’e set etme sırasında DB’de kullanıcıya ait bazı bilgileri güncelleyebilir, onları daha sonrasında kontrol edebilirsiniz.

  3. fatih dedi ki:

    Merhaba,
    token süresi bittiğinde, refresh token ile yenilemek ve bunu sürekli devam ettirmek dogru bi yapimidir.kullaniciya sürekli bağlı kal gibi bir altarnatif sunabilirmiyim

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhaba, sürekli yenilemek diye bir olay yok. refresh token bir kere kullanımlıktır default olarak. Eğer siz isterseniz customize ederek her refresh token call edildiğinde, access token ile birlikte her seferinde yeni bir refresh token da verdirebilirsiniz. Fakat bu işlem pek istenilen yol değildir. Saygılarımla

  4. Betül Kaya dedi ki:

    Merhaba
    Token süresi 1 dakika,Refresh token süresi 2 dakika diyelim.
    kullanıcı token aldıktan sonra 5 dk boyunca hiç bir işlem yapmadı böyle bi durumda çözüm ne olur peki.
    birde refresh token kendisine bağlı olan token ile birlikte çalışmak zorundamıdır.
    kolay gelsin

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhaba, kusura bakmayın geç cevap için. Token + Refresh token süresi expire olduğunda sizin kulanıcıya log out yaptırıyor olmanız gerekmektedir zaten. İkinci sorunuzu tam anlamı ile anlayamadım fakat eğer siz refresh token özelliğini implemente ederseniz, ilk token aldığınızda yanında o token’ı yenileyebilmek için bir refresh token verilir.

      Saygılarımla.

  5. Can dedi ki:

    Merhaba,

    bu owin kütüphanesinin ürettiği token’lar bir yerde mi tutuluyor yoksa access token üzerinden çözümleme falan mı yapıyor? Mesela 15 günlük bir token verdik. Kullanıcı aynı token ile 13. gün yine giriş yaptı. Bu kütüphane token’ın halen geçerli olup olmadığını nasıl anlıyor? Yada kullanıcı bilgilerini hala nasıl tanıyabiliyor.(Örneğin claim’e tanımladığımız username gibi)?

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhaba, token’lar persist edilmemektedir. Default olarak on the fly hesaplanıp, encrypt ve decrypt edilmektedir. Encrypt edilen verinin içerisinde expire date’leri gibi bilgiler bulunmaktadır.

  6. Ali dedi ki:

    Merhaba,

    Mobil uygulamalarda (Hybrid/Native) web api güvenliğini sağlamak için makalelerinizden ciddi derecede faydalandım. Güzel anlatımlarınız için teşekkür ederim, bir sorum olacak.

    Mobil uygulama kullanıcısı uzun süre uygulamaya girmediğini varsayalım, yani hem access_token hemde refresh_token expire olduğu durumda, uygulamayı açan kullanıcıya login ekranı getirmeden, uygulama kullanımına geçebilmesi için nasıl bir mantık geliştirilmeli ?

    App içerisinde kullanıcı-adı şifre tutmanın çok doğru bir yöntem olduğunu düşünmüyorum.
    Access_Token ve Refresh_Token süresine 1-2 yıl gibi bir değer vermeninde doğru olmadığını düşünüyorum.

    Bu senaryo için fikrinizi almak isterim.

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhaba, teşekkür ederim öncelikle.
      Açıkçası söz konusu mobile olunca işler biraz değişiyor. Doğru olan şudur diyemiyorum bu konuda. Herkesin izlediği farklı yöntemler mevcut. Kullanıcının bilgilerini persist etmek pek efektif olmayacaktır bu case’de. En etkin yol, mobile kullanıcılarına özel daha uzun süreli bir refresh token vermek olacaktır sanırım. Ama buda best practice’dir diyemiyorum.

      Kolay gelsin.

      • Ali dedi ki:

        Yanıtınız için teşekkür ederim, çözüm olarak söylediğiniz gibi uzun süreli bir refresh_token verip, uygulama her açıldığında access_token expire olmuş ise refresh_Token ile hem access_token hemde refresh_token bilgisini yeniliyorum. şuan için iş görüyor farklı bir şey aklıma gelirse deneyip sizinle paylaşırım.

        Tekrardan teşekkür ederim

  7. ismail dedi ki:

    Merhaba Access token aldık expired suresi 5 dk süre doldu refresh ile tekrar acces token aldık buda 5 dk sonra bitti ben tekrar refresh token kullanamaz mıyım?
    Cevaplarınız için teşekkür ederim.
    iyi çalışmalar.

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhaba, istediğiniz kadar refresh token kullanabilirsiniz ama pek tavsiye edilen bir yöntem değildir açıkcası. Snifflendiği taktirde, kötü niyetli kişiler refresh token’ı kullanarak, sonsuz bir oturum elde edebilirler.

  8. Enes AKYILDIZ dedi ki:

    merhaba Hocam
    asp.net ile bir api yaptım
    Token alıp android tabletle kullanıyorum
    token in süresi 14 gün fakat tablet uyku moduna girip bir müddet sonra uyandığında
    token geçerliliğini kaybediyor ve autohorization denied mesajı alıyorum.

    bunun sebebi nedir acaba

  9. Alparslan dedi ki:

    Merhaba Gökhan Bey,

    Açıklayıcı makaleniz için öncelikle teşekkür ederim.

    Mantığı kavramaya çalışıyorum, buradaki implementasyon tamamlandıktan sonra artık tüm talepleri refreshing token ile mi yapacağız?

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhaba, hayır. Refresh token’ın da belirli bir kullanım ve üretim sayısı olmalıdır. Eğer, sürekli bir refresh token ürettirirsek, token snifflendiği an “kötü niyetli şahıs” claim’ler doğrultusunda istediği işlemi yapabilecektir. Bu karar tamamen sizin ve business’ınıza kalmış bir olaydır.

      • Alparslan dedi ki:

        Merhaba tekrar,

        Cevabınız için teşekkür ederim.

        Loglama noktasında o oturum için (FormsAuth kulllanıyorum) benzersiz bir Guid oluşturup hangi oturumda ne işlem yapıldığını takip ediyorum.

        Bu Guid yerine oluşturulan auth token’ı ikame etmek sakıncalı olmaz sanırım, nasıl olsa refresh token tutulmayacağı için, expire olmuş bir token. Tavsiyeniz nedir?

  10. Mesut Ilıca dedi ki:

    Merhaba, bu işlemi yapmak için illa bu web api mi kullanmak lazım normal web site ile nasıl oturum açma, token alma ve sonuçları çekme işlemini yapabiliriz?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*