> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OAuth istemci kimlik bilgileri

> Kapsamı sınırlı bir hizmet hesabı istemcisi oluşturun, tek seferlik gizli anahtarları yönetin ve belirsiz isteklerden güvenli bir şekilde kurtarın.

Arka uç entegrasyonunuz kısa ömürlü erişim belirteçlerine ihtiyaç duyduğunda veya güvenlik politikanız bunları gerektirdiğinde OAuth istemci kimlik bilgilerini kullanın. Her istemci tek bir hizmet hesabına ve tek bir kuruluşa aittir. **OAuth isteğe bağlıdır:** bir anahtarı güvenli bir şekilde saklayıp değiştirebilen özel bir sunucu entegrasyonu için kapsamı sınırlı bir API anahtarı yeterlidir. İki yöntem arasında seçim yapmak ve hizmet hesaplarının nasıl uyum sağladığını anlamak için [Kimlik doğrulama](/tr/developers/v1/authentication) sayfasına bakın.

<Note>
  OAuth erişimi kuruluşunuz için etkinleştirilmiş olmalıdır. Kurulumunuz; bölgesel belirteç uç noktasını, veren tarafı (issuer), hedef kitleyi (audience) ve istemci kimlik doğrulama yöntemini sağlar. Bu ayarlara ihtiyacınız varsa veya istemci yönetimine erişemiyorsanız Living Security Destek ekibiyle iletişime geçin.
</Note>

İstemci kimlik bilgileri yetki türü hizmet hesabınızı temsil eder. Bir kişinin oturum açmasını sağlamaz ve bir müşteriden bir uygulamayı yetkilendirmesini istemez. Tarayıcı üzerinden devredilen yetkilendirme ayrı bir OAuth özelliğidir ve bu işlemler tarafından sunulmaz.

## Başlamadan önce

* Yalnızca entegrasyonun ihtiyaç duyduğu izinlere sahip bir [hizmet hesabı](/tr/developers/developer-hub/service-accounts) oluşturun.
* Yeni istemciye vermek istediğiniz `service_account:manage` ve her izne sahip bir yönetim kimlik bilgisi kullanın. Hedef hesap da bu izinlere sahip olmalıdır. Bir istemci, hiçbir hesabın yetkisini genişletemez.
* Kuruluşun [bölgesini](/tr/developers/v1/regions) seçin. API kimlik bilgileri ve OAuth erişim belirteçleri, eşleşen bölgesel API ana bilgisayarına ait olmalıdır.
* İstemci gizli anahtarını ve belirteçleri sunucu tarafındaki gizli anahtar deponuzda saklayın. Bunları hiçbir zaman tarayıcı koduna, mobil uygulamalara, kaynak kontrolüne veya istek günlüklerine eklemeyin.

## İstemci oluşturma

`POST /v1/oauth_clients` için `service_account_id`, açık `scopes` içeren boş olmayan bir liste ve bir `Idempotency-Key` gereklidir. Joker karakterler kabul edilmez. Bir istemci, toplam uzunluğu en fazla 4.096 karakter olan en çok 100 kapsamı destekler. Her hizmet hesabı en fazla 20 istemciye veya çözümlenmemiş oluşturma/temizleme işlemine sahip olabilir. İptal işlemi API erişimini hemen reddeder. Bir istemci veya belirsiz bir sağlayıcı oluşturma işlemi, uzak temizleme onaylanana kadar sınıra dahil edilmeye devam eder. Terk edilmiş bir rezervasyon veya sağlayıcı işlemi başlamadan önce başarısız olduğu kanıtlanmış bir oluşturma işlemi, yuvasını güvenle serbest bırakabilir. Bu işlemin yeniden deneme anahtarı yine ilk denemeye aittir; yerine yenisini oluşturmaya karar vermeden önce bu makbuzu kurtarın.

Bu oluşturma denemesi için bir yeniden deneme anahtarı seçin ve isteği göndermeden **önce** kalıcı olarak saklayın. Boşluk içermeyen, 1–255 görünür ASCII karakteri kullanın. Yanıt kaybolduktan sonra aynı hesap, kapsamlar, yönetim sorumlusu, bölge ve API sürümüyle aynı anahtarı yeniden kullanın. Aynı hizmet hesabı altında yönetim kimlik bilgisini döndürmek yeni bir yeniden deneme kimliği oluşturmaz.

Python'un `requests` paketini yükleyin. Aşağıdaki ortam değerlerini normal gizli anahtar ve yapılandırma yönetiminiz aracılığıyla yükleyin:

| Değişken | Değer |
| - | - |
| `LIVING_SECURITY_API_KEY` | Yönetim API anahtarı |
| `LIVING_SECURITY_REGION` | `us` veya `eu` |
| `LIVING_SECURITY_SERVICE_ACCOUNT_ID` | Hedef hizmet hesabı kimliği |
| `LIVING_SECURITY_OAUTH_CREATE_KEY` | Daha önce kalıcı olarak saklanan yeniden deneme anahtarı |

```python Python theme={null}
import os
import requests

HOSTS = {
    "us": "https://api.us-east-1.livingsecurity.ai/v1",
    "eu": "https://api.eu-west-1.livingsecurity.ai/v1",
}
base = HOSTS[os.environ["LIVING_SECURITY_REGION"]]
response = requests.post(
    f"{base}/oauth_clients",
    auth=("apikey", os.environ["LIVING_SECURITY_API_KEY"]),
    headers={
        "Living-Security-Version": "2026-07-01",
        "Idempotency-Key": os.environ["LIVING_SECURITY_OAUTH_CREATE_KEY"],
    },
    json={
        "service_account_id": os.environ["LIVING_SECURITY_SERVICE_ACCOUNT_ID"],
        "scopes": ["organization:read"],
    },
    timeout=(5, 30),
    allow_redirects=False,
)
try:
    if response.status_code != 201:
        raise RuntimeError(
            f"Client creation needs review: HTTP {response.status_code}; "
            f"request_id={response.headers.get('Request-Id', 'unknown')}"
        )
    client = response.json()
    if client.get("object") != "oauth_client" or not client.get("id"):
        raise RuntimeError("Unexpected client receipt; preserve the retry key")
    if client.get("status") != "active" or not client.get("client_secret"):
        raise RuntimeError(
            f"Client {client['id']} needs recovery; no usable secret was returned"
        )
    # Persist client['id'], client['client_id'], and client['client_secret']
    # directly in your secret manager before using the client. Do not print them.
finally:
    response.close()
```

Örnek tek bir istek yapar ve sonucu bellekte tutar. Üretimde çalıştırmadan önce, işaretlenen noktaya gizli anahtar yöneticinizin yazma işlemini ekleyin. Örnek, belirsiz bir sonuçtan sonra sessizce başka bir istemci oluşturmak yerine bilinçli olarak bir karar verilmesini gerektirir. Ağ istisnaları da aşağıdaki kurtarma adımlarını gerektirir.

Oluşturma ve makbuz yanıtları `201` kullanır ve `id`, `service_account_id`, `client_id`, `scopes`, `status`, `created_at` ve `client_secret` içeren bir `oauth_client` kaynağı barındırır. Yanıtlar `Cache-Control: no-store` olarak işaretlenir.

* **`id`** platform kaynağını tanımlar. Almak ve iptal etmek için kaydedin.
* **`client_id`** belirteç değişimi sırasında istemciyi tanımlar. Platform kaynak kimliği değildir. Oluşturma beklemedeyken `null` olabilir.
* **`client_secret`** yalnızca oluşturmayı tamamlayan isteğe döndürülür. Başarılı yanıtın kaybolmasından sonraki yeniden deneme dahil, tekrarlanan her oluşturma isteği `null` döndürür. Alma işlemi hiçbir zaman gizli anahtar döndürmez.

## Kaybolan veya kesintiye uğrayan yanıttan kurtarma

Kaynak makbuzunu kurtarmak için kaydedilmiş yeniden deneme anahtarıyla aynı oluşturma isteğini tekrarlayın. Makbuz güncel durumu yansıtır; bu nedenle iptal edilmiş bir istemci iptal edilmiş olarak kalır. Bu işlem, genel 24 saatlik önbelleğe alınmış yanıtı yeniden oynatma sözleşmesini kullanmaz ve `Idempotent-Replayed` üst bilgisi döndürmez.

| Sonuç | Sonraki eylem |
| - | - |
| `active`, gizli anahtar mevcut | Gizli anahtarı güvenli bir şekilde kaydedin ve ilk kurulumla devam edin. |
| `active`, gizli anahtar yok | Gizli anahtar kurtarılamaz. Bu istemciyi iptal edin, iptali doğrulayın, ardından yeni bir yeniden deneme anahtarı kullanarak yedek oluşturun. |
| `pending` | Oluşturma doğrulanmadı. Aynı yeniden deneme anahtarını koruyun. Durumu incelemek için kaynağı alın; belirsizliği aşmak amacıyla yinelenen kayıtlar oluşturmayın. |
| `revoked`, `disabled` veya `expired` | Bu istemciyi kullanmayın. Yedek sağlamadan önce hedeflenen hesap yapılandırmasını doğrulayın. |
| `409 idempotency_key_reuse` | İstek, mevcut bir anahtar altında değişti. Ayrı bir oluşturmanın gerekli olup olmadığına karar vermeden önce özgün işlemi kurtarın. |
| `409 invalid_request` | Hedef hesabın durumunu ve verilen yetkileri kontrol edin. İstemci sınırına ulaşıldıysa yeniden denemeden önce temizliği tamamlayın; yeniden deneme anahtarını değiştirmek kapasite açmaz. |
| `429` | `Retry-After` değerine uyun; aynı anahtarı ve isteği koruyun. |
| `500`, `503` veya ağ zaman aşımı | Sonuç bilinmiyor olabilir. Anahtarı ve girdileri koruyun; başka bir istemci oluşturmadan önce makbuzu kurtarın. |
| `401` veya `403` | Yeniden denemeden önce kimlik bilgisi, izin veya yetkilendirme erişimini çözün. |
| `404` | OAuth etkinleştirmesini, bölgesel ana bilgisayarı ve kaynak sahipliğini doğrulayın. |

İstek kimlikleri ve kurtarma ayrıntıları için [hatalar](/tr/developers/v1/errors/overview) sayfasına bakın. Destek talebiyle birlikte hiçbir zaman istemci gizli anahtarı veya erişim belirteci göndermeyin.

## İnceleme ve iptal

Yönetim kimlik bilgilerinizi ve platform kaynağı `id` değerini kullanın:

| İşlem | İstek | Başarı |
| - | - | - |
| Güncel durumu inceleme | `GET /v1/oauth_clients/{id}` | `200`, gizli anahtar içermeyen istemci kaynağı |
| Erişimi iptal etme | `DELETE /v1/oauth_clients/{id}` | `200`, gizli anahtar içermeyen iptal edilmiş istemci kaynağı |

İptal işlemi, daha önce verilmiş belirteçlerle yapılan istekler dahil olmak üzere istemcinin sonraki API isteklerini engeller. API tarafından önceden kabul edilmiş işleri iptal etmez. Uzak kimlik bilgisi temizliği daha sonra tamamlanabilir. İptal işlemini tekrarlamak güvenlidir ve yeniden deneme anahtarı gerektirmez. İptal edilen istemcinin kendisi bir API çağıranıysa yönetim kimlik bilgisini kullanmaya devam edin.

## Erişimi kaybetmeden anahtar değiştirme

Gerekli kapsam üst sınırına sahip ikinci bir istemci oluşturun. Gizli anahtarını kaydedin, bölgesel belirteç uç noktanızı kullanarak bir belirteç alın ve entegrasyonun bununla çalıştığını doğrulayın. Entegrasyonu yedek istemciye geçirin, ardından eski kaynağı iptal edin. Hatalı bir dağıtımdan kurtulabilmek için bağımsız bir yönetim kimlik bilgisi bulundurun.

Erişim belirteçleri, istemcinin kapsamlarından ve hizmet hesabının güncel izinlerinden daha fazlasını veremez. Hesap izinlerini kaldırmak veya bir istemciyi iptal etmek, bir belirtecin kalan ömründen önceliklidir. Önbelleğe alınmış bir belirteci yetkilendirmenin hâlâ geçerli olduğunun kanıtı olarak değerlendirmeyin. Süresi dolmadan önce istemcinin kimliğini yeniden doğrulayarak yeni bir erişim belirteci alın; bu yetki türü yenileme belirteçlerini kullanmaz.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.