İki Faktörlü Kimlik Doğrulama
TOTP tabanlı iki faktörlü kimlik doğrulama (2FA) ile hesabınızı güvence altına alın
TOTP tabanlı iki faktörlü kimlik doğrulama ile MailLand hesabınıza ekstra bir güvenlik katmanı ekleyin. Etkinleştirildiğinde, oturum açmak için hem parolanız hem de bir kimlik doğrulama uygulamasından alınan zamana dayalı bir kod gerekir.
2FA Kurulumu
Kurulumu Başlatın
POST https://api.mail.land/v1/auth/2fa/setupcurl -X POST https://api.mail.land/v1/auth/2fa/setup \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Bir TOTP gizli anahtarı, QR kodu ve yedek kodlarınızı döndürür:
{
"secret": "JBSWY3DPEHPK3PXP",
"secretMasked": "JBSW...3PXP",
"otpAuthUri": "otpauth://totp/MailLand:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=MailLand",
"qrCodeDataUri": "data:image/png;base64,iVBORw0KGgo...",
"backupCodes": [
"A1B2C3D4",
"E5F6G7H8",
"I9J0K1L2",
"M3N4O5P6",
"Q7R8S9T0",
"U1V2W3X4",
"Y5Z6A7B8",
"C9D0E1F2",
"G3H4I5J6",
"K7L8M9N0"
]
}| Alan | Tür | Açıklama |
|---|---|---|
secret | string | Base32 kodlu TOTP gizli anahtarı (manuel giriş için) |
secretMasked | string | Anahtarın maskelenmiş hâli, log/UI'de gösterilmesi güvenlidir |
otpAuthUri | string | Kimlik doğrulama uygulamaları için URI |
qrCodeDataUri | string | Data URI olarak QR kod görseli |
backupCodes | string[] | Her biri 8 karakterden oluşan 10 tek kullanımlık yedek kod (A-Z2-9) |
10 yedek kodu şimdi kaydedin: setup yanıtı, bunların gösterildiği tek yerdir. enable yalnızca 2FA'nın etkin olduğunu onaylar; kodları tekrar döndürmez.
QR kodunu bir kimlik doğrulama uygulamasıyla (Google Authenticator, Authy, 1Password vb.) tarayın ya da gizli anahtarı manuel olarak girin.
2FA'yı Etkinleştirin
Kimlik doğrulama uygulamanızdan bir kod sağlayarak kurulumu onaylayın:
POST https://api.mail.land/v1/auth/2fa/enable{
"code": "123456"
}curl -X POST https://api.mail.land/v1/auth/2fa/enable \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"code": "123456"}'{
"message": "Two-factor authentication enabled successfully"
}Enable yanıtı yedek kodları tekrar göstermez: bunlar yalnızca yukarıdaki setup yanıtında bir kez gösterildi. Kimlik doğrulama uygulamanıza erişiminizi kaybetmeniz durumunda her kod bir kez oturum açmak için kullanılabilir.
Kod Doğrulama
Oturum açma işlemi requiresTwoFactor: true döndürdüğünde, bir TOTP kodunu doğrulayarak kimlik doğrulamayı tamamlayın:
POST https://api.mail.land/v1/auth/2fa/verify{
"challengeId": "2fa_challenge_abc123",
"code": "123456",
"trustDevice": true
}trustDevice isteğe bağlıdır. true olduğunda, cihaz 30 gün boyunca hatırlanır ve bu cihazdan yapılan sonraki girişlerde 2FA atlanır.
curl -X POST https://api.mail.land/v1/auth/2fa/verify \
-H "Content-Type: application/json" \
-d '{
"challengeId": "2fa_challenge_abc123",
"code": "123456"
}'{
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "rt_a1b2c3d4e5...",
"deviceTrusted": false
}Bu yanıtta expiresIn veya user nesnesi yoktur. trustDevice true olduğunda deviceTrusted true olur. Cihaz belirtecinin kendisi hiçbir zaman gövdede yer almaz: API onu HttpOnly __Host-trusted_device çerezi olarak ayarlar ve tarayıcı bir sonraki girişte onu kendisi gönderir.
Yedek Kod Kullanımı
Kimlik doğrulama uygulamanıza erişiminizi kaybederseniz bunun yerine bir yedek kod kullanın:
POST https://api.mail.land/v1/auth/2fa/verify-backup{
"challengeId": "2fa_challenge_abc123",
"code": "a1b2c3d4"
}Alan backupCode değil, code'dur (8-10 karakter).
curl -X POST https://api.mail.land/v1/auth/2fa/verify-backup \
-H "Content-Type: application/json" \
-d '{
"challengeId": "2fa_challenge_abc123",
"code": "a1b2c3d4"
}'TOTP doğrulamasıyla aynı yanıtı döndürür. Her yedek kod yalnızca bir kez kullanılabilir.
Yedek Kodları Yenileyin
Yeni bir yedek kod seti oluşturun (önceki tüm kodları geçersiz kılar). Güncel bir TOTP kodu gerektirir:
POST https://api.mail.land/v1/auth/2fa/backup-codes/regenerate{
"code": "123456"
}curl -X POST https://api.mail.land/v1/auth/2fa/backup-codes/regenerate \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"code": "123456"}'[
"X2Y3Z4A5",
"B6C7D8E9",
"F2G3H4J5",
"K6L7M8N9",
"P2Q3R4S5",
"T6U7V8W9",
"X6Y7Z8A9",
"B2C3D4E5",
"F6G7H8J9",
"K2L3M4N5"
]Yanıt, { "backupCodes": [...] } değil, düz bir JSON dize dizisidir.
2FA Durumunu Kontrol Edin
GET https://api.mail.land/v1/auth/2fa/statuscurl https://api.mail.land/v1/auth/2fa/status \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"isEnabled": true,
"enabledAt": "2026-01-15T10:00:00Z",
"backupCodesRemaining": 6,
"trustedDevicesCount": 2
}Güvenilir Cihazlar
2FA doğrulaması sırasında cihaz hatırlanabilir; böylece aynı tarayıcıdan gelecekteki oturum açışlarda 2FA atlanır.
Güvenilir Cihazları Listeleyin
GET https://api.mail.land/v1/auth/2fa/devicescurl https://api.mail.land/v1/auth/2fa/devices \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."[
{
"id": "dev_a1b2c3d4e5",
"deviceName": "Chrome on macOS",
"ipAddress": "203.0.113.10",
"createdAt": "2026-01-20T14:00:00Z",
"expiresAt": "2026-02-19T14:00:00Z",
"lastUsedAt": "2026-02-17T09:00:00Z",
"isCurrent": true
},
{
"id": "dev_f6g7h8i9j0",
"deviceName": "Firefox on Windows",
"ipAddress": "198.51.100.24",
"createdAt": "2026-02-01T08:00:00Z",
"expiresAt": "2026-03-03T08:00:00Z",
"lastUsedAt": "2026-02-16T15:30:00Z",
"isCurrent": false
}
]Yanıt, { "devices": [...] } değil, düz bir dizidir ve alanlar name yerine deviceName, ipAddress, expiresAt ve isCurrent'tır.
Bir Cihazın Yetkisini İptal Edin
DELETE https://api.mail.land/v1/auth/2fa/devices/{id}Başarılı olursa 204 döner, cihaz kimliği geçerli kullanıcıya ait değilse 404 RESOURCE_NOT_FOUND döner.
curl -X DELETE https://api.mail.land/v1/auth/2fa/devices/dev_a1b2c3d4e5 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Tüm Cihazların Yetkisini İptal Edin
DELETE https://api.mail.land/v1/auth/2fa/devicescurl -X DELETE https://api.mail.land/v1/auth/2fa/devices \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Tüm güvenilir cihazların yetkisini iptal ederek her cihazdan bir sonraki oturum açışta 2FA doğrulaması zorunlu hale getirir.
Parolanın değiştirilmesi, sıfırlanması ve her yerden oturumun kapatılması (POST /v1/auth/revoke-all-tokens) da tüm güvenilir cihazların yetkisini aynı şekilde iptal eder.
2FA'yı Devre Dışı Bırakın
POST https://api.mail.land/v1/auth/2fa/disable{
"code": "123456"
}curl -X POST https://api.mail.land/v1/auth/2fa/disable \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"code": "123456"}'Eylemi onaylamak için geçerli bir TOTP veya yedek kod gerekir: önce bir TOTP kodu denenir, yedek kod yalnızca TOTP doğrulaması başarısız olursa kabul edilir. 2FA'yı devre dışı bırakmak tüm yedek kodları ve güvenilen cihazları geçersiz kılar.
Hata Yanıtları
Başarısızlıkların çoğu (geçersiz veya süresi dolmuş kod, yanlış durum, yeniden kullanılan yedek kod) bir mesajla birlikte 400 INVALID_REQUEST döner. Hatalı biçimlendirilmiş bir istek gövdesi (yanlış kod uzunluğu, eksik challengeId vb.) önce alan doğrulamasında başarısız olur ve bunun yerine 400 VALIDATION_FAILED döner. Bilinmeyen bir cihaz 404 RESOURCE_NOT_FOUND döner. INVALID_CODE, TWO_FACTOR_* veya CHALLENGE_EXPIRED gibi ayrı bir kod yoktur.
| Durum | Kod | Açıklama |
|---|---|---|
400 | INVALID_REQUEST | Geçersiz veya süresi dolmuş kod, yanlış durum, yeniden kullanılan yedek kod vb. |
400 | VALIDATION_FAILED | İstek gövdesi alan doğrulamasında başarısız oldu (örn. yanlış kod uzunluğu, eksik alan) |
404 | RESOURCE_NOT_FOUND | Cihaz bulunamadı |
Sonraki Adımlar
- Kimlik Doğrulama: oturum açma ve token yönetimi
- Ekip Yönetimi: ekip erişimini yönetin
- Çalışma Alanları: çalışma alanı ayarları