ErtisAuth

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#

json
{
	"_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" }
}
AlanZorunluAçıklama
nameevetGörünen ad. Aynı zamanda token'ların iss claim'idir.
slughayırURL dostu ad; kurulum içinde benzersizdir. Verilmezse addan türetilir. Aynı zamanda token'ların aud claim'idir.
expires_inevetAccess token ömrü, saniye cinsinden. 0'dan büyük olmalıdır.
refresh_token_expires_inevetRefresh token ömrü, saniye cinsinden. 0'dan büyük olmalıdır.
scoped_token_expires_inhayırScoped token ömrü, saniye cinsinden. 0 ya da verilmezse 12 saat.
reset_password_token_expires_inhayırParola sıfırlama token'larının ömrü, saniye cinsinden. Verilmezse 2 saat.
secret_keyevetMembership'in tüm token'larının imzalandığı anahtar (HMAC-SHA256). Membership'in encoding'inde en az 32 byte.
hash_algorithmevetParola hash algoritması (aşağıya bakın). Varsayılanı yoktur.
encodinghayırParolaları ve anahtarları byte'a çevirmek için kullanılan metin encoding'i. Varsayılan UTF-8.
default_languagehayırBir veritabanı locale'inin ISO 639-1 kodu (ör. en, tr).
user_activationhayıractive: 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_policyhayırCihaz kodu akışında kullanılan kod politikasının slug'ı.
otp_settingshayırTek kullanımlık şifre ayarları. Verildiğinde host zorunludur; policy.max_attempts en az 1 olmalıdır (varsayılan 5).
mail_providershayırMail hook'ların kullandığı mail sağlayıcıları, aşağıya bakın.
Uyarı: 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
ARGON2IDYeni membership'ler için önerilir.
PBKDF2-SHA512, PBKDF2-SHA256Argon2'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-512Hızlı hash'ler; mevcut kullanıcı veritabanlarını içe aktarmak için desteklenir. Yeni membership'ler için önerilmez.
SHA1, MD5Eski 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.

typeAlanlarGönderim
SmtpServername, slug, host, port, tls_enabled, username, passwordErtisAuth HTML'i oluşturur ve SMTP üzerinden gönderir
SendGridname, slug, apiKeyErtisAuth HTML'i oluşturur ve SendGrid API'siyle gönderir
MailChimpname, slug, apiKeyMailchimp Transactional'da (Mandrill) saklanan bir şablon gönderilir; bkz. Mail Hook'lar
json
"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.

Not: bir membership'in yanıtı, secret key'ini ve mail sağlayıcılarının kimlik bilgilerini içerir. memberships.read yetkisini yalnızca kurulumun operatörlerine verin.

Endpoint'ler#

MetotRouteYetki
GET/memberships/{id}memberships.read.{id}
GET/membershipsmemberships.read
POST/memberships/_querymemberships.read
GET/memberships/search?keyword=memberships.read
POST/membershipsmemberships.create
PUT/memberships/{id}memberships.update.{id}
DELETE/memberships/{id}memberships.delete.{id}
GET/memberships/settingsmemberships.read
GET/memberships/settings/encodingsmemberships.read
GET/memberships/settings/encodings/defaultmemberships.read
GET/memberships/settings/hash-algorithmsmemberships.read
GET/memberships/settings/hash-algorithms/defaultmemberships.read
GET/memberships/settings/db-localesmemberships.read
GET/memberships/settings/db-locales/defaultmemberships.read

Membership route'ları kurulum genelidir: çağıranın token'ının membership'ine bağlı değildir.

Membership getirme#

http
GET /memberships/{id}
Authorization: Bearer <access_token>

{id} id ya da slug olabilir. Membership yoksa 404 MembershipNotFound döner.

GET /memberships, POST /memberships/_query ve GET /memberships/search?keyword=, API Kuralları sayfasında anlatıldığı gibi çalışır.

Membership oluşturma#

shell
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.

HataNe zaman
400 ModelValidationErrorZorunlu bir alan eksik ya da geçersiz; data tüm sorunları listeler
409 MembershipAlreadyExistsSlug kullanımda

Membership güncelleme#

http
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.

Uyarı: parolalar her zaman membership'in mevcut 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#

http
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:

json
{
	"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