# Kimlik Doğrulama

Onoxsoft Panel API'si iki kimlik doğrulama yöntemi destekler: Bearer Token ve HMAC-SHA256 imzası.

## Bearer Token

Panel üzerinden oluşturulan API tokenları.

```http
Authorization: Bearer onox_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

### Token Kapsamları (Scopes)

| Kapsam | Yetki |
|--------|-------|
| `accounts:read` | Hesap listele ve görüntüle |
| `accounts:write` | Hesap oluştur, düzenle, askıya al |
| `domains:read` | Domain listele |
| `domains:write` | Domain ekle/sil |
| `dns:*` | DNS tam yetki |
| `ssl:read` | Sertifika listele |
| `ssl:write` | Sertifika al/sil |
| `databases:*` | Veritabanı tam yetki |
| `mail:*` | Mail hesabı tam yetki |
| `admin:*` | Tam admin yetkisi (dikkatli kullanın) |

### Token Oluşturma API'si

```bash
POST /api/v1/admin/tokens
Authorization: Bearer onox_live_xxxxx (admin token)
Content-Type: application/json

{
    "name": "WHMCS Integration",
    "scopes": ["accounts:read", "accounts:write", "domains:*"],
    "expires_at": "2027-05-13T00:00:00Z",
    "allowed_ips": ["203.0.113.5"]
}
```

Yanıt:
```json
{
    "success": true,
    "data": {
        "id": 12,
        "name": "WHMCS Integration",
        "token": "onox_live_xxxxxxxxxxxxxxxx",
        "scopes": ["accounts:read", "accounts:write", "domains:*"],
        "expires_at": "2027-05-13T00:00:00Z",
        "created_at": "2026-05-13T10:00:00Z"
    }
}
```

::: warning Token Güvenliği
Token yalnızca oluşturulduğunda tam olarak gösterilir. Sonra maskeli görünür — kaybedin ve yenisini oluşturun.
:::

## HMAC-SHA256 İmzası

Servis-servis iletişimi ve cluster node'ları için.

### İmza Hesaplama

```
signature = HMAC-SHA256(
    key    = shared_secret,
    message = timestamp + "\n" + METHOD + "\n" + path + "\n" + body_hash
)
```

Örnek (Python):

```python
import hmac
import hashlib
import time
import json

def sign_request(method: str, path: str, body: dict, secret: str) -> dict:
    ts = str(int(time.time()))
    body_str = json.dumps(body, separators=(',', ':')) if body else ''
    body_hash = hashlib.sha256(body_str.encode()).hexdigest()
    message = f"{ts}\n{method.upper()}\n{path}\n{body_hash}"
    sig = hmac.new(secret.encode(), message.encode(), hashlib.sha256).hexdigest()
    return {
        'X-Onox-Key-Id': 'key_abc123',
        'X-Onox-Timestamp': ts,
        'X-Onox-Signature': f'sha256={sig}',
    }
```

### İmza Başlıkları

```http
POST /api/v1/accounts HTTP/1.1
Host: panel.yourdomain.com
X-Onox-Key-Id: key_abc123
X-Onox-Timestamp: 1748808000
X-Onox-Signature: sha256=e3b0c44298fc1c149afb...
Content-Type: application/json
```

İmza geçerlilik süresi: **±300 saniye** (replay saldırısı koruması)

## Token İptal Etme

```bash
DELETE /api/v1/admin/tokens/12
Authorization: Bearer onox_live_admin_xxxxx
```

## Sonraki Adım

[Accounts API →](/tr/api/accounts)
