Membership'ler
ErtisAuth'un izole kiracıları olan membership'leri oluşturun ve yönetin.
Membership, izole bir kiracıdır: kullanıcıların, rollerin, uygulamaların ve diğer tüm kaynakların sahibidir ve kullanıcılarının kimlik doğrulama ayarlarını tutar. Bkz. Temel Kavramlar.
İlk membership kurulum sırasında oluşturulur. Sonraki membership'ler bu API ile oluşturulur.
Membership nesnesi#
{
"_id": "66f1c0d2a4b5c6d7e8f90123",
"name": "My Company",
"slug": "my-company",
"expires_in": 3600,
"scoped_token_expires_in": 900,
"refresh_token_expires_in": 86400,
"reset_password_token_expires_in": 1800,
"secret_key": "<at least 32 bytes>",
"hash_algorithm": "ARGON2ID",
"encoding": "UTF-8",
"default_language": "en",
"user_activation": "active",
"code_policy": "tv-codes",
"otp_settings": {
"host": "https://app.example.com/reset-password",
"policy": {
"length": 6,
"contains_letters": false,
"contains_digits": true,
"expires_in": 300,
"max_attempts": 5
}
},
"mail_providers": [
{
"type": "SmtpServer",
"name": "Company SMTP",
"slug": "company-smtp",
"host": "smtp.example.com",
"port": 587,
"tls_enabled": true,
"username": "no-reply@example.com",
"password": "<password>"
}
],
"sys": { "created_at": "2026-01-01T12:00:00Z", "created_by": "system" }
}| Alan | Zorunlu | Açıklama |
|---|---|---|
name | evet | Görünen ad. Aynı zamanda token'ların iss claim'idir. |
slug | hayır | URL dostu ad; kurulum içinde benzersizdir. Verilmezse addan türetilir. Aynı zamanda token'ların aud claim'idir. |
expires_in | evet | Access token ömrü, saniye cinsinden. 0'dan büyük olmalıdır. |
refresh_token_expires_in | evet | Refresh token ömrü, saniye cinsinden. 0'dan büyük olmalıdır. |
scoped_token_expires_in | hayır | Scoped token ömrü, saniye cinsinden. 0 ya da verilmezse 12 saat. |
reset_password_token_expires_in | hayır | Parola sıfırlama token'larının ömrü, saniye cinsinden. Verilmezse 2 saat. |
secret_key | evet | Membership'in tüm token'larının imzalandığı anahtar (HMAC-SHA256). Membership'in encoding'inde en az 32 byte. |
hash_algorithm | evet | Parola hash algoritması (aşağıya bakın). Varsayılanı yoktur. |
encoding | hayır | Parolaları ve anahtarları byte'a çevirmek için kullanılan metin encoding'i. Varsayılan UTF-8. |
default_language | hayır | Bir veritabanı locale'inin ISO 639-1 kodu (ör. en, tr). |
user_activation | hayır | active: yeni kullanıcılar giriş yapabilmek için hesaplarını bir e-postadan etkinleştirmelidir. passive (varsayılan): yeni kullanıcılar hemen aktiftir. |
code_policy | hayır | Cihaz kodu akışında kullanılan kod politikasının slug'ı. |
otp_settings | hayır | Tek kullanımlık şifre ayarları. Verildiğinde host zorunludur; policy.max_attempts en az 1 olmalıdır (varsayılan 5). |
mail_providers | hayır | Mail hook'ların kullandığı mail sağlayıcıları, aşağıya bakın. |
secret_key membership'in her token'ını imzalar. Onu bilen herkes herhangi bir kullanıcı için token üretebilir. Değiştirilmesi o ana kadar verilen tüm token'ları geçersiz kılar; her kullanıcının yeniden giriş yapması gerekir.Parola hash algoritmaları#
| Değer | Öneri |
|---|---|
ARGON2ID | Yeni membership'ler için önerilir. |
PBKDF2-SHA512, PBKDF2-SHA256 | Argon2'nin kabul edilmediği yerlerde (ör. FIPS ortamları) iyi seçeneklerdir. |
SHA2-224, SHA2-256, SHA2-384, SHA2-512, SHA2-512-224, SHA2-512-256, SHA3-224, SHA3-256, SHA3-384, SHA3-512 | Hızlı hash'ler; mevcut kullanıcı veritabanlarını içe aktarmak için desteklenir. Yeni membership'ler için önerilmez. |
SHA1, MD5 | Eski algoritmalar; yalnızca eski kullanıcı veritabanlarını içe aktarmak için. |
Hızlı hash'ler (SHA, MD5), veritabanınız sızarsa kaba kuvvetle hızla kırılabilir. Başka bir sistemden parola hash'i aktarmıyorsanız ARGON2ID'yi tercih edin.
Değerler alt çizgiyle de kabul edilir (SHA2_512).
Mail sağlayıcıları#
mail_providers, membership'in e-posta gönderebileceği servislerin listesidir. Bir mail hook bunlardan birine slug'ıyla başvurur.
type | Alanlar | Gönderim |
|---|---|---|
SmtpServer | name, slug, host, port, tls_enabled, username, password | ErtisAuth HTML'i oluşturur ve SMTP üzerinden gönderir |
SendGrid | name, slug, apiKey | ErtisAuth HTML'i oluşturur ve SendGrid API'siyle gönderir |
MailChimp | name, slug, apiKey | Mailchimp Transactional'da (Mandrill) saklanan bir şablon gönderilir; bkz. Mail Hook'lar |
"mail_providers": [
{ "type": "SendGrid", "name": "SendGrid", "slug": "sendgrid", "apiKey": "<api_key>" },
{ "type": "MailChimp", "name": "Mandrill", "slug": "mandrill", "apiKey": "<api_key>" }
]type büyük/küçük harfe duyarlıdır.
memberships.read yetkisini yalnızca kurulumun operatörlerine verin.Endpoint'ler#
| Metot | Route | Yetki |
|---|---|---|
GET | /memberships/{id} | memberships.read.{id} |
GET | /memberships | memberships.read |
POST | /memberships/_query | memberships.read |
GET | /memberships/search?keyword= | memberships.read |
POST | /memberships | memberships.create |
PUT | /memberships/{id} | memberships.update.{id} |
DELETE | /memberships/{id} | memberships.delete.{id} |
GET | /memberships/settings | memberships.read |
GET | /memberships/settings/encodings | memberships.read |
GET | /memberships/settings/encodings/default | memberships.read |
GET | /memberships/settings/hash-algorithms | memberships.read |
GET | /memberships/settings/hash-algorithms/default | memberships.read |
GET | /memberships/settings/db-locales | memberships.read |
GET | /memberships/settings/db-locales/default | memberships.read |
Membership route'ları kurulum genelidir: çağıranın token'ının membership'ine bağlı değildir.
Membership getirme#
GET /memberships/{id}
Authorization: Bearer <access_token>{id} id ya da slug olabilir. Membership yoksa 404 MembershipNotFound döner.
Listeleme, sorgulama ve arama#
GET /memberships, POST /memberships/_query ve GET /memberships/search?keyword=, API Kuralları sayfasında anlatıldığı gibi çalışır.
Membership oluşturma#
curl -X POST https://auth.example.com/memberships \
-H 'Authorization: Bearer <access_token>' \
-H 'Content-Type: application/json' \
-d '{
"name": "Mobile App",
"expires_in": 3600,
"refresh_token_expires_in": 2592000,
"secret_key": "<random string of at least 32 bytes>",
"hash_algorithm": "ARGON2ID",
"encoding": "UTF-8"
}'Secret key'i güvenli bir rastgele üreticiyle oluşturun, örneğin openssl rand -base64 48.
Yanıt 201 Created: membership.
Yeni membership boştur. Ona erişebilen bir token'la, endpoint'leri üzerinden bir admin rolü, bir kullanıcı tipi ve ilk kullanıcıları oluşturun; tamamen yeni bir kiracı için ise ayrı bir kurulum ve kurulum adımlarını kullanın.
| Hata | Ne zaman |
|---|---|
400 ModelValidationError | Zorunlu bir alan eksik ya da geçersiz; data tüm sorunları listeler |
409 MembershipAlreadyExists | Slug kullanımda |
Membership güncelleme#
PUT /memberships/{id}Gövde, oluşturma isteğiyle aynı alanlara sahiptir; güncellenen kayıt route'taki id'dir, gövdedeki _id yok sayılır.
Şu alanlar verilmediğinde (ya da boş veya 0 olduğunda) mevcut değerlerini korur: name, secret_key, hash_algorithm, encoding, expires_in ve refresh_token_expires_in. Diğer tüm alanlar gönderdiğinizle değiştirilir: mail_providers, otp_settings, code_policy, user_activation, default_language, scoped_token_expires_in ya da reset_password_token_expires_in gönderilmezse temizlenir. Önce membership'i okuyun ve değişikliklerinizle birlikte geri gönderin.
hash_algorithm'iyle doğrulanır ve var olan hash'ler dönüştürülmez. Kullanıcıları olan bir membership'in algoritmasını değiştirmek, tüm parolalarının çalışmamasına yol açar; hepsinin parolasını sıfırlaması gerekir. Algoritmayı membership'i oluştururken seçin.Membership silme#
DELETE /memberships/{id}204 No Content döner. Hâlâ kaynakları (kullanıcılar, roller, uygulamalar…) olan bir membership silinemez: 409 MembershipCouldNotDeleted.
Ayarlar#
GET /memberships/settings, bir membership'in kullanabileceği değerleri tek yanıtta döner:
{
"encodings": [ { "displayName": "Unicode (UTF-8)", "name": "UTF-8" } ],
"defaultEncoding": "UTF-8",
"hashAlgorithms": [ "MD5", "SHA1", "SHA2-224", "SHA2-256", "SHA2-384", "SHA2-512", "SHA2-512-224", "SHA2-512-256", "SHA3-224", "SHA3-256", "SHA3-384", "SHA3-512", "ARGON2ID", "PBKDF2-SHA256", "PBKDF2-SHA512" ],
"defaultHashAlgorithm": "ARGON2ID",
"dbLocales": [ { "Name": "None", "ISO6391Code": "none" }, { "Name": "Turkish", "ISO6391Code": "tr" } ],
"defaultDbLocale": "none"
}Listeler tek tek de /memberships/settings/encodings, /hash-algorithms ve /db-locales altında, her biri bir /default endpoint'iyle birlikte sunulur. defaultHashAlgorithm önerilen algoritmadır; membership'in varsayılanı yoktur ve her zaman bir algoritma belirtmelidir.
Dokümantasyonda bir hata mı buldunuz? Issue açın