JWT Token Otomasyonu (Bölüm 1)
  1. Anasayfa
  2. AWS

JWT Token Otomasyonu (Bölüm 1)

0

Anlatacağım otomasyon, JWT Token (*1) yaşam döngüsü içerisindeki Token Rotasyonuna konfigürasyon dosyalarının da dahil olması ve konfigürasyon dosyalarında zamanı geldiğinde Token değişikliği yapılması şeklinde açıklanabilir.

Değiştirme işlemini manuel ve otomatik olarak iki şekilde yapmak mümkün. Doğal olarak şu andaki konumuz manuel olarak yapılması değil. Biz bu işi DevOps (*2) felsefesine uygun olarak otomatik yapmayı tercih edeceğiz. Bu tip bir işi yapmanın birçok yolu mevcut. Siz de buna benzer işlerinizi otomatikleştirebilirsiniz. Bu anlatacağım uygulamayı, buna benzer otomatikleştirme işlerinin nasıl yapılacağı konusunda yol göstermesi ve fikir vermesi açısından paylaşıyorum.

Amacımız;

API (*3)
uygulamamız kimlik doğrulama (Authentication) yöntemi olarak JWT Token kullanılıyor. JWT Token doğası gereği son kullanma süresi olan bir kimlik doğrulama yöntemidir ve kullanılan bu Token’ların da geçerlilik süreleri vardır. Bu süreler dolmadan belirli bir süre önce JWT Token’ların yenileri ile değiştirilmeleri gerekiyor. Değişmesi gereken içeriklerin listesi aşağıdadır;

  • Uygulamaların konfigürasyon dosyalarının içeriğinde bulunan Token’lar,
  • Scriptlerin API’ye ulaşması için içeriklerinde veya konfigürasyonlarının içerisinde bulunan Token’lar,
  • AWS ALB (*4) Target Group’ların uygulamarın çalışıp çalışmadığını kontrol için kullandığı Health Check (*5) parametreleri içerisinde bulunan JWT Token’lar.

Bu makale dizisi içeriğinde neler ile ilgili bilgi bulacaksınız:

  • Jwt Token yapısının incelenmesi,
  • Powershell (*6) ile RegEx (*7) kullanarak dosyaların içerisinde JWT Token araması yapmak,
  • PowerShell ile JWT Token Parse ederek, JWT Token bölümlerini inceleyip sonuçlara göre aksiyon oluşturmak,
  • XML (*8) ve JSON (*9) dosyaları Import edip değişiklik yapmak,
  • Text (*10) bazlı dosyaları Import edip değişiklik yapmak,
  • AWS Load Balancer Target Gruplarını AWS PowerShell (*11) ile sorgulayıp ayarlarını değiştirmek,
  • Basit data saklama işlemleri için CSV (*12) dosya oluşturmak ve bunlar ile çalışmak.

Sorunu tanımlayalım

Daha önce de bahsettiğimiz gibi amacımız JWT Token’ları otomatik olarak değiştirecek bir yapı oluşturulması ve zamanlanmış olarak belirli sürelerde bu değişikliğin yapılması şeklinde tanımlanabilir.

İlk aşamada, Dosyaları mevcut formatına bakmadan Text bazlı olarak RegEx kullanarak içerik araması yapıp, Token içeren dosyaları bulmak. Bulunan JWT Token’ların içeriğini Decode edip tüm ayrıntıları CSV tipinde bir dosyaya aktarmak. İkinci aşamada birinci aşamada oluşturulan CSV dosyasını kullanarak tarihi yaklaşan Token’ların yenisinin oluşturulmasını sağlamak. Yeni Token’ları da dosya formatına veya servise uygun şekilde yenilerek aktif hale getirmek. Token’ları arayacağımz dosya formatları ve Servisler;

  1. .Net Framework olan uygulamalarda (Örneğin web.config) XML formatında dosyalar.
  2. .Net Core olan uygulamalarda (Örneğin appsettings.config) JSON formatında dosyalar.
  3. PowerShell (*.ps1) scriptleri ve Text (*.txt) formatında içeriğinde Token barındıran PowerShell scriptlerinin kullandığı aslında CSV formatında olan konfigürasyon dosyaları.
  4. AWS ALB Target Group’ların Health Check parametrelerindeki Token’ların (AWS PowerShell ile) sorgulanıp gerekiyorsa değiştirilmesi

Bu iki aşama için benim tasarımımda 2 adet Powershell Script kullanacağız. Bu Script’leri de sırası ile haftalık olarak zamanlanmış bir görev içinde (Windows için Task Scheduler veya Linux için Cron kullanarak) çalıştırılmasını sağlayacağız. Oluşan değişiklikleri ve hataları raporlayıp gerektiğinde alarm oluşturacağız.

Çözüm için yapılanları açıklayalım;

  1. Öncelikle JWT Token araması yapacağımız için arayacağımız şeyin yapısını incelememiz gerekiyor.
  2. Genel olarak yapısını öğrendiğimiz JWT Token adaylarını dosyalar içinde bulmak için RegEx kullanacağız.
  3. Bulduğumuz Token adaylarının gerçekten JWT Token olup olmadığını Powershell ile sınayacağız.
  4. Doğrulamaları geçen Tokenlar’ı API’nin Token üreten yoluna gönderip yenilenmesi gerekenleri tespit edeceğiz.
  5. Yenilenmesi gereken Token’ları dosya tipine göre (XML, Json, ps1, txt) açıp Token’ı yenisi ile değiştirdikten sonra yeni haliyle kayıt edeceğiz.
  6. Oluşan değişiklikleri ve hataları raporlayıp gerektiğinde alarm oluşturacağız.
  7. Tüm otomasyonu yapan Scriptleri zamanlanmış olarak haftada bir çalıştıracağız.

Makalenin çok uzun olmaması için ilk bölümü burada kesip, ikinci bölümünde; yukarıda detaylı hikayesini anlattığım otomasyonun çözüm aşamalarını yapacağım. İlginizi çektiyse İkinci bölümde görüşmek üzere.

Referanslar:

  1. API (Application Programming Interface): https://en.wikipedia.org/wiki/API
  2. XML (Extensible Markup Language): https://en.wikipedia.org/wiki/XML

TAGs: Otomasyon, JWT Token, DevOps, API, Powershell, AWS Powershell, XML, JSON, CSV, TEXT.

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Bora Tercan 1974 yılında Ankara’da doğdu. 20 seneden fazla bilişim sektöründe profesyonel iş deneyimi içerisinde; Marka bağımsız Sunucu, Yazılım, Firewall, Router, Veritabanı, Kablosuz Ağ, İnternet, Lan ve Wan vs. her türlü bilişim alt yapısının kurgulanması, projelendirilmesi, sorunsuz çalıştırılmasının sağlanması, merkezi olarak takibi, yönetilmesi ve sorunların tespit edilerek düzeltilmesi/düzelttirilmesi. Bilişim satın alma süreçlerinin takibi ve organizasyonun yapılması, Bilişim personelinin yönetilmesi, bilişim firmalarıyla işbirliği kurarak en iyi çözüme ilk elden ulaşılmasını sağlaması, iş analizi ve proje yönetimi gibi konularda 15 seneden fazlası Turizmde olmak üzere bilişim profesyoneli olarak sektör tecrübesi bulunmaktadır. Kariyerini bulut bilişim konusunda önemli projeleri olan Turizm Yazılımları geliştiren bir firmada Bilgi İşlem Yöneticisi olarak devam ettiriyor. Sahip olduğu sertifikalar; MCP MCSE MCSA MCDBA’dir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir