Mikro hizmetler için birleşik oturum açma kimlik doğrulaması nasıl yapılır? JWT?

Vatansız oturum açma ilkesi

1.1. Durum bilgisi nedir?

Durum bilgisi olan hizmet, yani sunucunun, istemcinin kimliğini belirlemek ve isteği kullanıcının kimliğine göre işlemek için her oturumun istemci bilgilerini kaydetmesi gerekir.Tipik bir tasarım tomcat'teki oturum gibidir.

Örneğin, oturum açma: Kullanıcı oturum açtıktan sonra, oturum açma bilgilerini sunucu oturumunda kaydederiz ve kullanıcıya ilgili oturumu kaydetmek için bir çerez değeri veririz. Ardından bir sonraki istek, kullanıcı çerez değerini getirir, ilgili oturumu tanımlayabilir ve kullanıcının bilgilerini bulabiliriz.

Dezavantajları nelerdir?

  • Sunucu, büyük miktarda veriyi kaydederek sunucu üzerindeki baskıyı artırır
  • Sunucu, kullanıcı durumunu kaydeder ve yatay olarak genişletilemez
  • İstemci istekleri sunucuya bağlıdır ve birden çok istek aynı sunucuya erişmelidir

1.2. Vatansız nedir

Mikro hizmet kümesindeki her hizmet, dışarıya Rest tarzı bir arabirim sağlar. Ve Rest stilinin en önemli özelliklerinden biri: hizmetin vatansızlığı, yani:

  • Sunucu, herhangi bir istemcinin bilgisini kaydetmez
  • Her müşteri talebinde, müşterinin kimliğinin tanımlanabilmesini sağlayan kendi kendini tanımlayan bilgiler olmalıdır.

Faydaları nelerdir?

  • İstemci istekleri sunucu bilgilerine dayanmaz, birden çok isteğin aynı hizmete erişmesi gerekmez
  • Sunucunun kümesi ve durumu istemciye karşı şeffaftır
  • Sunucu keyfi olarak taşınabilir ve ölçeklenebilir
  • Sunucu depolama baskısını azaltın

1.3. Vatansızlık nasıl elde edilir

Durum bilgisi olmayan oturum açma süreci:

  • İstemci hizmeti ilk kez istediğinde, sunucu kullanıcının kimliğini doğrular (oturum açma)
  • Kimlik doğrulaması geçtikten sonra, kullanıcı bilgileri, istemciye oturum açma kimlik bilgisi olarak döndürülen bir belirteç oluşturmak için şifrelenir.
  • Sonraki her istekte, istemci kimlik doğrulama kodunu taşıyacaktır.
  • Sunucu, jetonun şifresini çözer ve geçerli olup olmadığına karar verir.
  • akış şeması:

    Giriş sürecinin tamamında en kritik nokta nedir?

    Jeton güvenliği

    Token, müşterinin kimliğini tanımlayan tek işarettir. Şifreleme yeterince katı değilse sahte olacaktır.

    Şifreleme ne şekilde güvenli ve güvenilirdir?

    JWT + RSA asimetrik şifreleme kullanacağız

    1.4. JWT

    1.4.1. Giriş

    Tam adı Json Web Token olan JWT, durumsuz, dağıtılmış Web uygulaması yetkilendirmesini gerçekleştirebilen JSON tarzı hafif bir yetkilendirme ve kimlik doğrulama spesifikasyonudur; resmi web sitesi: https://jwt.io

    GitHub'da jwt'nin java istemcisi: https://github.com/jwtk/jjwt

    1.4.2. Veri biçimi

    JWT üç kısım veri içerir:

    Üstbilgi: Üstbilgi, genellikle üstbilgide iki bölüm bilgi bulunur:

    • Beyan türü, işte JWT
    • Şifreleme algoritması, özel

    Verinin ilk bölümünü elde etmek için başlığı (şifresi çözülebilir) base64 şifreleyeceğiz.

    Yük: geçerli veri olan yük genellikle aşağıdaki bilgileri içerir:

    • Kullanıcı kimliği bilgileri (burada base64 şifreleme kullanıldığı için şifresinin çözülebileceğini, dolayısıyla hassas bilgileri saklamayın)
    • Kayıt beyanı: jeton düzenleme zamanı, sona erme süresi, veren kuruluş vb.

    Bu kısım ayrıca verilerin ikinci kısmını almak için base64 şifrelemesini kullanacaktır.

    İmza: İmza, tüm verinin kimlik doğrulama bilgisidir. Genel olarak, ilk iki adımdaki verilere ve ayrıca servis sırrına (sızmayın, periyodik olarak değiştirmek daha iyidir), bir şifreleme algoritması ile oluşturulur. Tüm verilerin bütünlüğünü ve güvenilirliğini doğrulamak için kullanılır

    Oluşturulan veri biçimi:

    Her biri yukarıdaki verilerin bir parçası olan 3 bölüme ayrıldığını görebilirsiniz.

    1.4.3. JWT etkileşim süreci

    akış şeması:

    Adım Çevirisi:

  • Kullanıcı Girişi
  • Hizmet kimlik doğrulaması, token geçtikten sonra sırrına göre üretilecek
  • Oluşturulan jetonu tarayıcıya iade edin
  • Kullanıcı jetonu taşımayı her istediğinde
  • Sunucu, jwt imzasını yorumlamak için genel anahtarı kullanır ve imzanın geçerli olduğuna karar verdikten sonra, kullanıcı bilgilerini yükten alır
  • Talebi işleyin ve yanıt sonucunu iade edin
  • JWT tarafından verilen jeton zaten kullanıcının kimlik bilgilerini içerdiğinden ve her talepte taşınacağından, hizmetin kullanıcı bilgilerini kaydetmesine veya hatta Rest'in vatansız belirtimine tam olarak uyan sorgulama için veritabanına gitmesine gerek yoktur. Uzantı: çerez, oturum, belirteci iyice anlayın

    1.4.4. Asimetrik şifreleme

    Şifreleme teknolojisi, bilgileri kodlamak ve kodunu çözmek için kullanılan bir teknolojidir. Kodlama, orijinal okunabilir bilgileri (düz metin olarak da bilinir) kod biçimine (şifreli metin olarak da bilinir) çevirmektir. Ters işlem, kod çözmedir (şifre çözme). Şifreleme teknolojisinin ana noktası şifrelemedir. Algoritmalar, şifreleme algoritmaları üç kategoriye ayrılabilir:

    AES gibi simetrik şifreleme

    • Temel: Düz metni N gruba ayırın, ardından anahtarı kullanarak her grubu kendi şifreli metnini oluşturmak için şifreleyin ve son olarak son şifreli metni oluşturmak için tüm gruplanmış şifreli metinleri birleştirin.
    • Avantaj: Açık algoritma, az miktarda hesaplama, hızlı şifreleme hızı, yüksek şifreleme verimliliği
    • kusur: Her iki taraf da aynı anahtarı kullanır, güvenlik garanti edilemez

    RSA gibi asimetrik şifreleme

    • Temel: Aynı anda iki anahtar oluşturun: bir özel anahtar ve bir genel anahtar. Özel anahtar gizli olarak saklanır ve genel anahtar güvenilir istemcilere verilebilir
    • Özel anahtar şifreleme , Özel anahtarı veya genel anahtarı tutarak şifresini çözebilir
    • Genel anahtar şifreleme , Yalnızca özel anahtarla şifresini çözebilir
    • avantaj: Güvenli ve kırılması zor
    • Dezavantajları: Algoritma zaman alıcıdır

    MD5, SHA gibi geri çevrilemez şifreleme

    • Temel: Şifreleme işleminde anahtar kullanımına gerek yoktur.Sade metin girildikten sonra sistem şifreleme algoritmasını doğrudan şifreli metne geçirir.Bu şifrelenmiş verilerin şifresi çözülemez ve şifreli metinden düz metin türetilemez.

    RSA algoritması geçmişi:

    1977'de üç matematikçi Rivest, Shamir ve Adleman, asimetrik şifrelemeyi gerçekleştirebilen bir algoritma tasarladı. Bu algoritma, üçünün kısaltmasını kullanır: RSA

    Zuul'un kimlik doğrulama süreciyle birleştirildi

    Sistem mimarisi tasarımını kademeli olarak geliştiriyoruz. Unutulmamalıdır ki, sır imzanın anahtarıdır, bu yüzden gizli tutulmalıdır.Onu kimlik doğrulama merkezinde saklıyoruz ve sırrı başka bir hizmette elde edemiyoruz.

    1.5.1. RSA şifrelemesiz

    Mikro hizmet mimarisinde, hizmetin kimlik doğrulama işlemini ağ geçidine koyabilir ve şekilde gösterildiği gibi kimlik doğrulamasında başarısız olan istekleri doğrudan durdurabiliriz:

  • Kullanıcı oturum açma isteği
  • Zuul, yetkilendirme istemek için talebi yetkilendirme merkezine iletir.
  • Yetkilendirme merkezi doğrulamayı tamamlar ve JWT sertifikası verir
  • Müşteri, JWT taşıyan diğer işlevleri ister
  • Zuul, geçtikten sonra doğrulanması ve serbest bırakılması için jwt'yi yetkilendirme merkezine teslim edecek
  • Kullanıcı isteği mikro hizmete ulaşır
  • Mikro hizmetler jwt'yi kimlik doğrulama merkezine aktarır ve kimlik doğrulama da kullanıcı bilgilerini analiz eder
  • Kimlik doğrulama merkezi, mikro hizmete kullanıcı verilerini döndürür
  • Mikro hizmet isteği işler ve yanıtı döndürür
  • Ne problem buldun?

    Her kimlik doğrulama, kimlik doğrulama merkezine bir ziyaret gerektirir Sistemler arasındaki ağ taleplerinin sıklığı çok yüksektir ve verimlilik biraz daha düşüktür ve kimlik doğrulama merkezi daha büyük baskı altındadır.

    RSA kimlik doğrulamasını birleştirin

    Doğrudan resme bakın:

    • İlk olarak RSA'yı genel ve özel anahtarlar oluşturmak için kullanıyoruz. Özel anahtar yetkilendirme merkezinde saklanır ve genel anahtar Zuul'da ve çeşitli mikro hizmetlerde saklanır.
    • Kullanıcı oturum açma isteği
    • JWT imza şifrelemesini özel anahtarla geçtikten sonra yetkilendirme merkezi doğrulaması
    • Jwt'yi kullanıcıya döndür
    • Kullanıcılar JWT erişimine sahiptir
    • Zuul, doğrulama için JWT'nin şifresini doğrudan genel anahtar aracılığıyla çözer ve ardından doğrulamadan sonra serbest bırakır.
    • İstek mikro hizmete ulaşır ve mikro hizmet, yetkilendirme merkezini ziyaret etmeden kullanıcı bilgilerini elde etmek için JWT'yi doğrudan genel anahtarla ayrıştırır
    Bu makale, mikro hizmetler altında işlem tutarlılığının nasıl sağlanacağından bahsediyor
    önceki
    Kod oluşturma aracı: IDEA'nın güçlü Canlı Şablonları
    Sonraki
    4D zarif grafikler ve metin, sizi JVM bellek düzeninde ve ayrıntılı analizde ustalaşmaya götürür
    En son ve en eksiksiz! İnternet şirketi işe yeniden başlamayı tekrar erteleyeceğini açıkladı Firmanız var mı?
    Bu çöp koleksiyonunu okuduktan sonra, görüşmeci ile konuşmak sorun değil
    Java'da eşzamanlı ve eşzamansız programlama, orijinal on arabirim artık yalnızca bir arabirime ihtiyaç duymaktadır
    Bir dizi temel otomatik dağıtım ve inşa süreci
    SpringBoot; filtreler, önleyiciler ve dilimler uygular
    Zhou Yutong'un sık sık görünüşü yükseldi! Küçük yeşil bir takım elbise giymek bir erkek çocuktan daha yakışıklı, gerçekten kıyaslanamaz
    Song Yanfei'nin tatil yeri tarzı giyinmesi nefreti çekiyor! Tropiklerde böyle giyiyoruz, üşüyoruz
    En yeni Japon sanatçı Yuko Shinki'nin en son özel sunucusu, yumuşak ve sevimli tarzı çok hoş ve model popüler.
    Şımarık ve sıcak katmanlı kıyafetler 2020 bahar sezonu için hazır, sadece gökyüzünün açılmasını bekleyin
    Jin Zhini, aylık W2 dergisinin Kore versiyonunun kapağındaydı, ancak etli yüzünün bu kadar kız gibi olmasını beklemiyordu.
    Park Caiying'in sarı saçları ana akım değil mi? Ne kadar saf bir Koreli kadın sanatçı, bu ana akım maç
    To Top