Ana içeriğe geç

1.5.2. Async Token Provider#

Yetkilerle kısıtlanmış servislerin kullanıcı etkileşimi olmadan uygulamalardan kullanılabilmesi(schedular işlemler gibi) için çalıştırılacak uygulamanın üzerinde bir keysis oturumu oluşturulması gerekmektedir.

Keysis authentication flow herhangi bir yazılım dili ile modellenerek başarılı authenticate sonrası her isteğe ilgili cookie ve header parametreler eklenerek güvenliklik uçların çağrımı yapılabilir.

Eksen framework ile geliştirilen uygulamalar için bu işlemi daha basit bir hale getirmek için sağlanan provider paketine async-token-provider paketi diyoruz.

Keysis uygulamalar için oluşturulmuş kullanıcı ve profil bilgileri ile UI uygulamalarından giriş yapılmasını engellemek için "kys_user" tablosunda yer alan "system" kolonu üzerinden yönetmektedir. system=true ise sadece uygulamalar login flow koşturabilirler. UI kullanılarak bu kullanıcılarla sisteme giriş yapamaz.

  1. Entegrasyona başlamadan önce veri ön hazırlığı yapmalısınız.
  2. Kullanıcı kaydı oluşturulmalıdır. (system=true olarak)
  3. Bu kullanıcı ile eşleştirilecek profile kaydı oluşturulmalıdır.
  4. Uygulamanın çağıracağı uçların yetkileri profil ile eşleştirilmelidir.
  5. kys_system_user tablosunda oluşturulan profile özel api_key ile insert script hazırlanmalıdır.

    • API KEY değeri keysis admini tarafından UI tarafından yönetilmektedir. Insert script ile API_KEY değerini entegrasyon yapan geliştirici belirlerken keysis admin random string oluşturmaktadır.
  6. Veri hazır olduktan sonra çağrım yapacak olan uygulamaya ilgili dependency eklenmelidir.

  7. İlgili environment ayarlanarak uygulama çalıştırılmalıdır.

Önemli Notlar

  1. Herhangi bir keysis çalışmadığı bir ortamda bu entegrasyonun yapıldığı uygulama çalıştırıldığında uygulama retry-count kadar deneme yaptıktan sonra otomatik shutdown yapılır.
  2. Eğer keysis admin tarafından tanımlı system user'a ait api_key regenerate eder ise. Çalışan uygulama belirtilen retry-count sonrası shutdown olur.
  3. Paket dependency olarak alındıktan sonra healtcheck veya authentication service kısımları kendi iş mantığınıza uygun olarak override edilerek özelleştirilebilir.

Kütüphane#

Gradle Dependencies

compile (
    [group: 'tr.com.havelsan.framework.oauth' , name: 'hvl-oauth-async-token-provider' , version: 'güncel versiyon repositoryden bakılmalıdır.' ]
)

Servis Tanımı#

Servis Kullanımı

@Autowired
private HvlAsyncTokenAuthenticationService asyncTokenAuthenticationService;
HvlAsyncTokenAuthenticationService.java

public interface HvlAsyncTokenAuthenticationService {

    void authenticate(HvlAuthRequest authRequest) throws HvlAuthException, HvlSessionServiceException;

}

Async Token Kütüphanesinin Yml Üzerinden Kullanılabilecek Özellikleri#

Parametre İsmi Açıklaması
hvl.auth.async-token.enabled true → Async token sisteminin devreye girip girmeyeceğini belirler.
hvl.auth.async-token.apikey keysis admin tarafından tekrar generate edilebilen system user'a özel authentication key değeridir.
hvl.auth.async-token.authentication-retry-count Uygulama çalışma anında başarısız authentication olur ise kaç kez deneme yapmasını ayarlamak için kullanılır.
hvl.auth.async-token.health-check.period 10 → Kaç dakikada bir tokenın yenileneceğini belirler.
hvl.auth.async-token.header.type Async token'ın nasıl taşınacağı bilgisidir. [header, cookie] değerini alabilir.
hvl.auth.async-token.header.token Statik token kullanılmak istenirse, token bilgisini tutar.