Ana içeriğe geç

1.1. Authentication#

Authentication, kullanıcı doğrulama işleminin yapıldığı uygulamadır.

Yetenekler#

Bu uygulama temelde kullanıcılara :

  • Giriş (login)
  • Çıkış (logout)
  • Oturum tazeleme (refresh)
  • Çok faktörlü kimlik doğrulaması (Multi-factor authentication)

yeteneği sağlar.

İstek Yaşam Döngüsü(Request Lifecycle)#

Authentication istek yaşam döngüsü 2 farklı yaşam döngüsüne sahiptir.

Giriş(Login) Yaşam Döngüsü#

  1. Son kullanıcı, kullanıcı ad, şifre ve authenticationType(default değeri db) bilgisiyle authentication'ın /auth/login ucuna istek gönderir.
  2. Kullanıcıdan gelen giriş bilgileri authenticationType değerine göre ldap, db vb doğrulama kaynağından doğrulanır.
  3. Eğer kullanıcı ad / şifre kombinasyonu doğru ise ;
    1. Çok faktörlü kimlik doğrulaması (Multi-factor authentication) aktif ise 4.adıma geçilir
    2. Aktif değil ise 10.adıma geçilir.
  4. Kullanıcının hatalı giriş sayısı, login süresi, two factor authentication aktiflik durumu vb. bilgilerine ulaşmak için system setting instance'dan sistem ayarları çekilir. Setting uygulaması ile ilgili ayrıntılı bilgiye üzerinden ulaşabilirsiniz.
  5. System instance ilgili ayarları döner.
  6. Verification türüne (sms, mail vb.) göre kullanıcının ilgili erişim bilgisine oluşturulan kodun gönderilmesi için Kafka'ya ilgili event atılır.
  7. Support Instance uygulaması Authentication'dan gönderilen event'i consume eder.
  8. Support Instance uygulaması consume ettiği event'in içerisindeki kodu kullanıcıya iletir.
  9. Kullanıcı oluşturulan kod ile tekrar istek gönderir. Gönderilen kodun doğrulama işlemi başarılı şekilde sonlandırıldıysa bir sonraki adıma geçilir. Doğrulanamadığı durumdaysa 15.adım ile kullanıcı hata kodu ile bilgilendirilir.
  10. Session bilgisi önbelleğe yazılır.
  11. Session bilgisi dönülür.
  12. Bu adım bu istek yaşam döngüsünde çalışmaz.
  13. Bu adım bu istek yaşam döngüsünde çalışmaz.
  14. Bu adım bu istek yaşam döngüsünde çalışmaz.
  15. Bu adımlar başarılı şekilde gerçekleştirildiğinde kullanıcı system user değil ise oluşturulan cookie cevaba eklenir ve kullanıcı tarafına iletilir. Adımlardan birinde meydana gelecek hata durumunda, hata cevaba eklenerek kullanıcı tarafına iletilir. System user için cookie yerine payload kısmına token ve session bilgileri eklenerek iletilir.

Sistemde aktif olması durumunda captcha doğrulaması yapılmaktadır. Bu aktiflik config.json'da bulunan enabled değeri ile yönetilmektedir.

  "application": {
    "captcha": {
      "enabled": true
    }
  }

Captcha giriş, kayıt ve şifre yenileme ekranlarında bulunmaktadır. Sistemde Google Captcha kullanıldığı için kurulum yapılacak ortam için bir hesap oluşturulması ve ilgili link üzerinden örnekte olduğu gibi sisteme ait domain bilgisi eklenmelidir.

Varsayılan (Default) Yaşam Döngüsü#

  1. Client /login haricinde herhangi bir path'e istek gönderir. (örn : /logout, /refresh)
  2. Bu adım bu istek yaşam döngüsünde çalışmaz.
  3. Bu adım bu istek yaşam döngüsünde çalışmaz.
  4. Bu adım bu istek yaşam döngüsünde çalışmaz.
  5. Bu adım bu istek yaşam döngüsünde çalışmaz.
  6. Bu adım bu istek yaşam döngüsünde çalışmaz.
  7. Bu adım bu istek yaşam döngüsünde çalışmaz.
  8. Bu adım bu istek yaşam döngüsünde çalışmaz.
  9. Bu adım bu istek yaşam döngüsünde çalışmaz.
  10. Bu adım bu istek yaşam döngüsünde çalışmaz.
  11. Bu adım bu istek yaşam döngüsünde çalışmaz.
  12. Kullanıcı güvenlik ve yetki kontrolü (security check) yapılır. Kontrol başarılı ise bir sonraki adıma geçilir. Değil ise 13. adım ile kullanıcı hata mesajı ile bilgilendirilir.
  13. Kullanıcı session bilgisi önbelleğe (cache) işlenir.
  14. Kullanıcının session ile ilgili gerçekleştirdiği isteğin cevabı dönülür.
  15. İlgili isteğin response bilgili kullanıcıya dönülür. Adımlardan birinde meydana gelecek hata durumunda, hata cevaba eklenerek kullanıcı tarafına iletilir.

User Fields#

  • expiration_date -> Kullanıcının geçerlilik süresini belirler. Sistemde kullanıcının aktif olarak bulunabileceği süredir.
  • failed_login_count -> Kullanıcının hatalı giriş sayısının tutulduğu alandır. her hatalı girişte bu sayı artar ve sistem ayarlarında belirlenen "failed_count" değerine ulaşan kullacılar kilitlenir.
  • locked_date -> Hatalı giriş sayısı sistem ayarlarında belirlenen "failed_count" değerine ulaşan kullanıcılar için bu alan kullanılır.
  • password_expiration_date -> Kullanıcı parolasının geçerlilik süresidir. Giriş tarihi bu süreyi geçtiğinde kullanıcı parola yenilemeye yönlendirilir.
  • password_must_change -> Parola geçerlilik süresi dolmuş kullanıcılar için kullanılan alandır.
  • last_login_date -> Kullanıcının son giriş tarihinin tutulduğu alandır.
  • system -> Sistem kullanıcısını işaretlemek için kullanılan alandır. Bu kullanıcıların session'ları süresiz olur ve login isteklerine cookie ile değil payload ile token ve session bilgileri eklenir.
  • admin -> Bu yetenek hiyerarşik yetki ile performnaslı bir şekilde sağlandığı için bir sonraki sürümde kullanılmayacaktır.