Problem

Coğrafi Bilgi Sistemleri servislerinde GetCapabilities ile dönmekte olan WSDL içerisindeki adreslerin Apinizer'a taşınması gerekmektedir

Sebep/Neden-
Çözüm2. bölgeye eklenecek bir Business Rule veya Script poliçesi ile url'de query param olarak 'request' anahtarında 'GetCapabilities' değeri geliyorsa string replace ile buradaki adres Apinizer'da ilgili proxy'e yönlenecek şekilde değiştirilmelidir.


Problem

Client IP adresinin 10.244.x.x şeklinde görülmesi 

Sebep/NedenKubernetes NodePort yapısında eğer client'dan X-Forwarded-For değer gelmiyorsa default olarak arka taraftaki uygulamaya pod'un IP adresini yönlendiriyor. Çözüm olarak externalTrafficPolicy değer Local yaparak çözebiliyoruz ancak bu defa NodePort gelen isteği Cluster'daki diğer sunuculara yönlendirmediğinden erişim sıkıntısı oluşuyor. İlgili Node'u bilip ona gitmek gerekiyor.
Çözüm

Apinizer Worker'ları Nginx veya F5 gibi bir yapının arkasına konacağı için, ilgili loadbalancer'ın konfigürasyon dosyasına aşağıdaki gibi header'a xff bilgisinin eklenmesi gerekiyor.


#Nginx için bu ayar aşağıdaki gibi yapılabilir:

location /apigateway/ {

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://api.inst.com/apigateway/;
} # end location

Problem

Api Trafik Loglarında alt çizgi içeren Header'ların görünmemesi/aktarılmaması

Sebep/Neden

Bu sorun Apinizer'la alakalı olmamakla birlikte, Apinizer'ın önünde kullanılma ihtimali olan Nginx'in varsayılan ayarları ile ilgilidir.

Nginx, web sunucusu ve ters proxy sunucusu olarak yaygın bir şekilde kullanılmaktadır. Ancak, Nginx'in varsayılan konfigürasyonunda, isimlerinde alt çizgi (_) karakteri bulunan HTTP header'ları işlenmez ve geçirilmez. Bu, alt çizgilerin HTTP RFC'sinde standart olmamasından kaynaklanmaktadır.

Çözüm

Bu sorunu çözmek için Nginx konfigürasyon dosyasında underscores_in_headers direktifini on olarak ayarlamalısınız. Bu, Nginx'in alt çizgi içeren header'ları doğru bir şekilde işlemesini sağlar.


vi /etc/nginx/nginx.conf

http {

underscores_in_headers on;

}


#ingress nginx için;


apiVersion: v1

kind: ConfigMap

metadata:

  name: nginx-configuration

  namespace: ingress-nginx

  labels:

    app: ingress-nginx

data:

  enable-underscores-in-headers: "true"


Problem

Türkçe karakterler bozularak iletiliyor

Sebep/NedenClient tarafından veri gönderimi sırasında Content-Type header'ına karakter set bilgisi set edilmelidir.
ÇözümClient örnek olarak gönderdiği Content-Type: application/xml ikilisinde value kısmını application/xml; charset=UTF-8 olacak şekilde ayarlayarak göndermelidir.


Problem

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Sebep/Neden-
Çözüm

İlgili adresin public sertifikası Sertifika Yönetimi sayfasından Apinizer'a eklenmelidir.

Adrese erişebilen bir tarayıcı yok ise openssl uygulaması yüklü ve adrese erişebilen bir sunucuda aşağıdaki komut ile indirilebilir:

openssl s_client -showcerts -connect server.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > serverscertfile.pem


Problem

Apinizer'ı 2024.05.4 veya sonrası bir versiyonuna güncelledim ancak arayüze login olamıyorum

Sebep/Neden2024.05.4 versiyonunda yapılan güvenlik yaması ile Apinizer Yönetim Konsolunda tarayıcılarının bulunduğu istemci IP'lerinin değer kontrolü zorunlu hale getirilmiştir. Bu sebeple arayüze "Kubernetes Ingress Controller" kullanarak bağlanan kurumların  X-Forwarded-For header'ı ile client ip bilgisini gönderecek ayarları yapması gerekmektedir.
Çözüm

Ingress Nginx Controller'ın bu değeri gönderebilmesi için iki değişiklik gerekmektedir.


Config Maps tanımındaki data bölümüne "use-forwarded-headers" anahtarı "true" değeri ile eklenmelidir. Örnek yaml dosyası şuna benzemelidir:

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
data:
  use-forwarded-headers: "true"
YML

Ingress kaynak tanımındaki anotasyon bölümüne "nginx.ingress.kubernetes.io/use-forwarded-headers" anahtarı "true" değeri ile eklenmelidir. Örnek yaml dosyası şuna benzemelidir:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: apinizer-manager-ingress
  namespace: apinizer
  annotations:
    nginx.ingress.kubernetes.io/use-forwarded-headers: "true"
YML

 Load balancer tarafında aşağıdaki header'lardan birinin mutlaka gelmesi gelmesi gerekiyor:

X-Forwarded-For
Proxy-Client-IP
WL-Proxy-Client-IP
HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED
HTTP_X_CLUSTER_CLIENT_IP
HTTP_CLIENT_IP
HTTP_FORWARDED_FOR
HTTP_FORWARDED
HTTP_VIA
REMOTE_ADDR


Problem

SOAP servislerde kullanılan WS-S ya da WS-STS politikaları "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target" hatası nedeniyle token alamıyor

Sebep/NedenSOAP servis çağrımında Apinizer'a yüklenmiş sertifikayı görememesi nedeniyle bu servisin token alımının reverse proxy üzerinden yapılması gerekiyor.
Çözümİlgili token alma adresi ile routing yapan bir reverse proxy oluşturulur ve token kullanan servisteki wss/wssts politikasının token alma adresi bu servis olarak verilir. Nadir durumlarda reverse proxy üzerinden script ile xml mesajındaki adresin değiştirilmesi gerekebilir.