İçeriğe geç

Kimlik Doğrulama

inSCADA REST API, form tabanlı login ve cookie tabanlı JWT token ile kimlik doğrulama kullanır.

POST /login
Content-Type: multipart/form-data
AlanDeğer
usernameKullanıcı adı
passwordŞifre

Başarılı login, yanıt header’ında iki cookie set eder:

CookieAçıklamaSüre
ins_access_tokenErişim token’ıKısa (dakikalar)
ins_refresh_tokenYenileme token’ıUzun (saatler)
HTTP/1.1 200 OK
Set-Cookie: ins_access_token=eyJhbG...; Path=/; Max-Age=300; HttpOnly; SameSite=Lax
Set-Cookie: ins_refresh_token=eyJhbG...; Path=/; Max-Age=86400; HttpOnly; SameSite=Lax
Content-Type: application/json
{"expire-seconds":300,"spaces":["default_space","production"]}

Yanıt gövdesi access token süresini (saniye) ve erişilebilir space listesini döndürür.

Terminal window
# Login
curl -c cookies.txt -X POST https://localhost:8082/login \
-F "username=admin" -F "password=admin"
# API çağrısı (cookie ile)
curl -b cookies.txt https://localhost:8082/api/projects \
-H "X-Space: default_space"

Access token süresi dolduğunda, refresh token ile otomatik yenilenir. İstemci tarafında ek işlem gerekmez — tarayıcı cookie’leri otomatik gönderir.

Programatik erişimde cookie’leri saklayıp sonraki isteklerde gönderin:

// JavaScript (fetch)
const response = await fetch('https://inscada:8082/api/projects', {
credentials: 'include',
headers: { 'X-Space': 'default_space' }
});
# Python (requests)
import requests
session = requests.Session()
session.post('https://inscada:8082/login',
data={'username': 'admin', 'password': 'admin'},
verify=False)
projects = session.get('https://inscada:8082/api/projects',
headers={'X-Space': 'default_space'}).json()

Çoklu çalışma alanı (multi-tenant) yapısında, API isteklerinde hangi space’te çalışıldığını belirtmek için X-Space header’ı kullanılır:

X-Space: default_space

Bu header her API isteğinde gönderilmelidir. Gönderilmezse varsayılan space kullanılır.

  • 5 başarısız giriş → hesap 10 dakika kilitlenir
  • Kilitlenen hesaplar /api/auth/lockedUsers endpoint’inden görüntülenebilir

Platform yöneticisi, whitelist/blacklist tabanlı IP filtreleme yapılandırabilir. Filtreleme aktifken yalnızca izin verilen IP adreslerinden API erişimi mümkündür.

Etkinleştirildiğinde, login sonrası OTP (One-Time Password) doğrulaması da gerekir. TOTP uyumlu mobil uygulamalar (Google Authenticator, Authy vb.) ile kullanılır.

Tüm API trafiği HTTPS üzerinden şifrelenmelidir. HTTP (port 8081) yalnızca geliştirme ortamında kullanılmalıdır.