Kimlik Doğrulama
inSCADA REST API, form tabanlı login ve cookie tabanlı JWT token ile kimlik doğrulama kullanır.
POST /loginContent-Type: multipart/form-data| Alan | Değer |
|---|---|
| username | Kullanıcı adı |
| password | Şifre |
Başarılı login, yanıt header’ında iki cookie set eder:
| Cookie | Açıklama | Süre |
|---|---|---|
| ins_access_token | Erişim token’ı | Kısa (dakikalar) |
| ins_refresh_token | Yenileme token’ı | Uzun (saatler) |
HTTP/1.1 200 OKSet-Cookie: ins_access_token=eyJhbG...; Path=/; Max-Age=300; HttpOnly; SameSite=LaxSet-Cookie: ins_refresh_token=eyJhbG...; Path=/; Max-Age=86400; HttpOnly; SameSite=LaxContent-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.
cURL Örneği
Section titled “cURL Örneği”# Logincurl -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"Token Yenileme
Section titled “Token Yenileme”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()X-Space Header
Section titled “X-Space Header”Ç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_spaceBu header her API isteğinde gönderilmelidir. Gönderilmezse varsayılan space kullanılır.
Güvenlik
Section titled “Güvenlik”Brute-Force Koruması
Section titled “Brute-Force Koruması”- 5 başarısız giriş → hesap 10 dakika kilitlenir
- Kilitlenen hesaplar
/api/auth/lockedUsersendpoint’inden görüntülenebilir
IP Filtreleme
Section titled “IP Filtreleme”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.
OTP / İki Faktörlü Doğrulama
Section titled “OTP / İki Faktörlü Doğrulama”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.