İçerikler :

Bir JWT Payload Örneği Claim Claim Tipleri JSON Web Algorithms - JWA JSON Web Encryption - JWE JSON Web Signature - JWS JSON Web Token Claims JWT'nin Bölümleri JWT Header JWT Header JSON Örneği JWT ile Doğrulama JWT - JSON Web Tokens JWT Payload JWT Signature - İmza

Bu Sayfayı Paylaş:

Kavram

JWT - JSON Web Tokens

Tanım: Kullanıcının doğrulama, Web servis ve bilgi güvenliği için kullanılan, bir RFC 7519 güvenlik standartı. Karşılıklı veri alış verişi yapan iki taraf JWT ile şifrelenmiş token'lar aracılığı ile güvenli bir şekilde iletişim kurar. Token, JSON Web Signature standartı şeklindedir ve JSON Web Encryption ile de şifrelenir.

Kavram

JSON Web Signature - JWS

Tanım: JSON Web Encryption (JWE) spesifikasyonuna uygun bir şekilde imzalanmış , JSON yapısında bir token biçimi. RFC 7519 ile tanımlanmıştır. Message Authentication Codes (MACs) veya digital imza kullanılır.

Kavram

JSON Web Encryption - JWE

Tanım: JSON yapısının veya Json içindeki verilerin şifrelenmesi için kullanılan bir RFC 7516 standartı. JWT (JSON Web Tokens) için de kullanılır.

Kavram

JSON Web Algorithms - JWA

Tanım: JWT (JSON Web Tokens) da kullanılan şifreleme algoritmalarını tanımlayan bir RFC 7518 standartı.

Veri

JWT'nin Bölümleri

JWT(JSON Web Tokens) üç ana kısımdan oluşmaktadır:
  • Header (Başlık) : Token tipi ve imza için kullanılacak algoritma bulunur
  • Payload (Veri) : Verilerin claim'ler şeklinde tutulduğu ana içerik yeri
  • Signature (İmza) : Header ve payload'ın birleştirilip bir key ile header'a verilen algoritmaya göre imzalanmış bölümü
Bu üç bölüm
header.payload.signature
yapısında birleştirilerek gönderilir.
Örneğin HMAC SHA256 algoritması kullanılmak istendiğinde imza bölümü şu şekilde oluşur:
HMACSHA256(
  base64UrlEncode(header) + ,
  "." + 
  base64UrlEncode(payload),
  secret-key
)

Aşağıdaki gibi gözükebilir:

Kavram

JWT Header

Tanım: JWT(JSON Web Tokens)'de token tipi ve imza için kullanılacak algoritmanın bulunduğu başlık bölümü. HS256, HMAC SHA256 ya da RSA gibi algoritmalar kullanılabilir. Type kısmında her zaman JWT yazar.

Örnek

JWT Header JSON Örneği

Aşağıda basit bir header örneği görülmektedir : code:/json { "alg": "HS256", "typ": "JWT" } code/:

Kavram

JWT Payload

Tanım: JWT(JSON Web Tokens)'de ana içeriğin claim'ler olarak tutulduğu bölüm. JSON yapısı şeklindedir ve alan adları claim'lere karşılık gelir.

Kavram

JWT Signature - İmza

Tanım: JWT(JSON Web Tokens)'de Header ve payload'ın birleştirilip bir key ile header'a verilen algoritmaya göre imzalanmış bölümü. Örneğin HMAC SHA256 algoritması kullanılmak istendiğinde imza bölümü şu şekilde oluşur: HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

Kavram

Claim

Tanım: JWT(JSON Web Tokens) da Payload içinde gönderici ve alıcının karşılıklı bildiği veri tipleri. iss (issuer = kuruluş), exp (expiration time = expire zamanı), sub (subject - kullanıcı veya istemci), aud (hedef kitle) gibi tanımlı (registered) olan claim'ler bulunur. Bu claimlere ek olarak herkes tarafından bilinen ve adına public claim adı verilen claim'lerde yaratılabilir. Veya sadece gönderici ve alıcı tarafında bilinen özel (private claim) claim'ler de yaratılabilir.

Veri

Claim Tipleri

JWT(JSON Web Tokens) da Payload içinde üç tip claim olabilir :
  • Registered : iss (issuer = kuruluş), exp (expiration time = expire zamanı), sub (subject - kullanıcı veya istemci), aud (hedef kitle) gibi tanımlı (registered) olan claim'ler
  • Public : Alıcı ve gönderici tarafından yaratılan herkes tarafından bilinen (public) claim'ler
  • Private : Sadece Alıcı ve gönderici tarafından bilinen gizli (private) claim'ler

Kaynak

JSON Web Token Claims

JWT(JSON Web Tokens)'de kayıtlı olan (registered) claim'lerin listesini tutan resmi sayfa. Public veya private claim yaratırken buradaki ile kesişmemesi önerilir.

Örnek

Bir JWT Payload Örneği

Aşağıda bir JWT içinde kullanılan bir payload örneği : code:/json { "sub": "1234512345", "name": "Neşet Ertaş", "admin": false } code/: sub, name ve admin claim'lerdir.

Veri

JWT ile Doğrulama

JWT (JSON Web Tokens) ile basitçe doğruma süreci şu şekilde olur.
1. Kullanıcı veya servis önce kullanıcı adı ve şifresi ile login olur.
2. Login sonrası cevap olarak JWT token'ı dönülür.
3. Bundan sonraki tüm isteklerde kullanıcı veya servis bu token'i gönderir
4. Gelen isteklere cevap veren servis gelen token'ı kontrol eder ve token'ı doğrular ve kullanıcı adı ve bilgilerini buradan alır. Eğer doğrulama geçersiz ise istek reddedilir.
2. adımda JWT token'ı oluşturma işleminde bir gizli anahtar kullanılır. Header ile Payload aralarına . konularak birleştirilir ve gizli anahtar ile şifrelenir. Ve Header.Payload.Signature dan oluşan JWT token'ı istemciye gönderilir. İstemciye gönderme için Header'a Authorization: Bearer MYTOKEN şeklinde token eklenmelidir.
4. adımda ise gelen token'ı doğrulama için gelen token'dan Header.Payload ifadesi daha önce kullanılan gizli anahtar ile imzalanır. İmzalanma sonucu üretilen sonuç, token ile gelen Signature bölümü ile aynı ise doğrulanma gerçekleşir. Değilse geçersiz bir token olduğu anlaşılır ve istek reddedilir.




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir