SDTR
Published in

SDTR

OAuth İşlemleri ve Token Kullanımı

Photo by Sebastiaam Stan on Pexels

Merhabalar,

Bu yazımda MERN teknoloji yığını ile çalıştığım uygulamalar içerisinde uygulamaya kayıtlanma sırasında gereken secret access token nasıl ve neden kullanılır kısaca değinmek istedim, keyifli okumalar…

Authentication(kimlik doğrulama) işlemi ile uygulamalara giriş yaparken şifre ve email ile doğrulama işlemi gerçekleştirilmektedir. Girilen bilgiler veri tabanında olan bilgiler ile uyuşuyorsa o zaman işlem başarılı bir şekilde gerçekleşmiş olmaktadır.

Kullanıcı email ve şifre bilgilerini girdikten sonra Express server’a gelen bilgiler MongoDB içerisinde kontrol edilerek girilen bilgilerin doğruluğuna bakılmaktadır.

Doğrulanma işlemi ardından 2 tip token yaratılmaktadır:

1-Access token(erişim tokeni): Kullanıcının yetkilendirilmesi için bu tokeni kullanması gereklidir. Bu token ön uca gönderilerek localstorage’da tutulmaktadır. Her istek üzerine verilen bu token Express server’a gelmektedir ve gelen token süresi geçerli ise işlem yapılmaktadır. Ancak süresi dolan token için Express server 403(forbidden) kodu ile işlemin yapılamayacağı bilgisini döndürmektedir.

Token süresini belirlemek için aşağıdaki örnek kod incelenebilir:

Süresi dolan token için refresh token isminde ikinci bir token oluşturularak süresi dolan access token yenilenmektedir. Refresh token, güvenlik açısından veri tabanında tutulur ve kullanıcı sistemden çıkış yaptıktan sonra silinmektedir.

Bu tokenler’in üretilmesi için JWT kullanılmaktadır.

Refresh token için aşağıdaki örnek kod incelenebilir:

JWT (jason web token) header, payload ve signature olmak üzere 3 kısımdan oluşmaktadır.

Burada imzalama(signature) kısmı önemlidir. Header, payload kısımlarını alır ve bunları BASE64'e göre kodlayarak imza tutar. Node.js içerisindeki crypto class’ı ile üretilen string imzayı oluşturmaktadır.

Bunun işlem için terminale gelerek,

1- node yazılır ve enter tuşuna basılır,

2- require(‘crypto’).randomBytes(64).toString(‘hex’) yazılır ve enter tuşuna basılır,

(Burada crypto class çağrılır, 64bitlik bir string oluşturulur ve toString ile string’e çevrilir. Gelen scret access token olmaktadır.)

3-bu secret .env içerisine gelerek saklanır. Bu işlemler doğrulama için önemlidir.

Authorization(yetkilendirme) işleminin Authenticaton işleminde farkı body kısmında kullanıcı isteği gönderilirken, isteğin header kısmında Bearer token Express server’a gönderilmektedir. Yetkilendirme işlemi için gönderilen token tipi Bearer olmaktadır. Bu tokenin server tarafından doğrulanması middleware sayesinde olmaktadır.

Zaman ayırdığınız için teşekkür ederim…

--

--

Yetenekli ve bilgili geliştiricilerden oluşan bir topluluk!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store