İlginizi Çekebilir
  1. Ana Sayfa
  2. AWS
  3. JWT Token Otomasyonu (Bölüm 1)

JWT Token Otomasyonu (Bölüm 1)

1_5D0oob4di64lzQYV3UXpng
DMC Teknoloji

Anlatacağım , (*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 (*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;

(*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,
  • (*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,
  • (*8) ve (*9) dosyaları Import edip değişiklik yapmak,
  • Text (*10) bazlı dosyaları Import edip değişiklik yapmak,
  • AWS Load Balancer Target Gruplarını (*11) ile sorgulayıp ayarlarını değiştirmek,
  • Basit data saklama işlemleri için (*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,

DMC Teknoloji
Yorum Yap

Yazar Hakkında

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.

Yorum Yap