> For the complete documentation index, see [llms.txt](https://docs.kangal.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kangal.dev/tr/consumerlar/credentials-groups.md).

# Credential, group ve policy

Yönetilen credential'lar onaylı client kimlik doğrulama materyalini consumer'a bağlar. Consumer grupları, ACL ve kapsamlı politika seçimi için tenant'a ait adlar sağlar.

## Credential API'si

| İşlem                       | Endpoint                                                           |
| --------------------------- | ------------------------------------------------------------------ |
| Oluşturma                   | `POST /api/v1/admin/consumer-credentials`                          |
| Tek consumer için listeleme | `GET /api/v1/admin/consumer-credentials?consumer_id={consumer_id}` |
| Silme                       | `DELETE /api/v1/admin/consumer-credentials/{credential_id}`        |

Create istekleri `consumer_id`, `type`, türe özel `key` ve `secret` değerleri, isteğe bağlı `tenant_id` ve isteğe bağlı `expires_at` veya `ttl_seconds` içerir. Yalnızca bir expiry alanı gönderin.

## Desteklenen credential türleri

| Tür       | Zorunlu değerler                                    | Runtime kullanımı                                                                       | Değiştirme                                                                  |
| --------- | --------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| `api_key` | Yüksek entropy'li `key`                             | `X-API-Key` ile gönderin ve `api_key_auth` bağlayın.                                    | Yeni key oluşturun, client'a dağıtın ve eski credential'ı silin.            |
| `basic`   | `key` olarak username, `secret` olarak güçlü parola | TLS üzerinden HTTP Basic ile gönderin ve consumer grup üyeliğini ACL ile zorunlu kılın. | Yeni credential oluşturun, client'ı güncelleyin ve eski credential'ı silin. |

### Basic credential oluşturma

```bash
curl -X POST "$KANGAL_ADMIN_URL/api/v1/admin/consumer-credentials" \
  -H "Authorization: Bearer $KANGAL_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "consumer_id": "CONSUMER_ID",
    "type": "basic",
    "key": "orders-client",
    "secret": "REPLACE_WITH_A_STRONG_PASSWORD",
    "tenant_id": "tenant-a",
    "ttl_seconds": 2592000
  }'
```

## Credential güvenliği

* API key ve parolaları onaylı yüksek entropy üreticisiyle oluşturun.
* Client credential'larını secret manager'da saklayın ve yalnızca TLS üzerinden gönderin.
* Create ve list response'larını hassas veri olarak işleyin; loglara veya destek kayıtlarına yazmayın.
* API-key değerleri şifrelenerek saklanır. Basic parolalar geri döndürülemez password hash olarak saklanır.
* Credential key'leri tenant ve credential türü içinde unique olmalıdır.
* Credential ömrünü sınırlamak için `expires_at` veya `ttl_seconds` kullanın.
* Client'lar yeni credential'a geçtikten sonra eski credential'ı silin.

## Consumer-group API'si

| İşlem                    | Endpoint                                                                  |
| ------------------------ | ------------------------------------------------------------------------- |
| Oluşturma/listeleme      | `POST`, `GET /api/v1/admin/consumer-groups`                               |
| Getirme/güncelleme/silme | `GET`, `PATCH`, `DELETE /api/v1/admin/consumer-groups/{group_id}`         |
| Üye ekleme               | `POST /api/v1/admin/consumer-groups/{group_id}/consumers/{consumer_id}`   |
| Üye çıkarma              | `DELETE /api/v1/admin/consumer-groups/{group_id}/consumers/{consumer_id}` |

Grup için `tenant_id` ve tenant içinde unique `name` zorunludur. `description` ve `tags` isteğe bağlıdır.

```bash
curl -X POST "$KANGAL_ADMIN_URL/api/v1/admin/consumer-groups" \
  -H "Authorization: Bearer $KANGAL_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "tenant_id": "tenant-a",
    "name": "payments",
    "description": "Payment API clients",
    "tags": ["production"]
  }'
```

Consumer'ı gruba ekleyin:

```bash
curl -X POST \
  "$KANGAL_ADMIN_URL/api/v1/admin/consumer-groups/GROUP_ID/consumers/CONSUMER_ID" \
  -H "Authorization: Bearer $KANGAL_ADMIN_TOKEN"
```

Grup ve consumer aynı tenant'a ait olmalıdır. Üyelik, `acl_control` ve `scope: "consumer_group"` politikalarının kullandığı grup adını kullanır.

## Grubu yeniden adlandırma veya silme

Her rename veya delete işleminde üyelikleri güncelleyin:

1. üyeleri `GET /api/v1/admin/consumers?group={current_name}` ile listeleyin;
2. group membership endpoint'iyle her üyeyi çıkarın;
3. grubu yeniden adlandırın veya silin;
4. rename sonrasında consumer'ları yeniden adlandırılmış gruba ekleyin.

Production ACL'lerinde yönetilen grup kaynaklarını ve membership endpoint'lerini kullanın. Ortamlar arasında tutarlı bir adlandırma standardı uygulayın.

## Sorun giderme

| Belirti                                   | Kontrol                                                                                                    |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| API key reddediliyor                      | Tam `X-API-Key` değerini, expiry'yi, tenant'ı, consumer'ı ve bağlı `api_key_auth` politikasını doğrulayın. |
| Basic credential reddediliyor             | Username, parola, expiry, tenant sahipliği, TLS ve consumer'ın ACL grubunu doğrulayın.                     |
| Grup ataması hata döndürüyor              | Grup ve consumer ID'lerini doğrulayın; iki kaynağın aynı tenant'a ait olduğunu kontrol edin.               |
| ACL yeniden adlandırılmış grubu tanımıyor | Mevcut grup adıyla üyelik çıkarma ve yeniden atama iş akışını tamamlayın.                                  |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kangal.dev/tr/consumerlar/credentials-groups.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
