MailLandDocs
Hesap

İ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/setup
Setup 2FA
curl -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:

2FA setup response
{
  "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"
  ]
}
AlanTürAçıklama
secretstringBase32 kodlu TOTP gizli anahtarı (manuel giriş için)
secretMaskedstringAnahtarın maskelenmiş hâli, log/UI'de gösterilmesi güvenlidir
otpAuthUristringKimlik doğrulama uygulamaları için URI
qrCodeDataUristringData URI olarak QR kod görseli
backupCodesstring[]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
Enable 2FA request
{
  "code": "123456"
}
Enable 2FA
curl -X POST https://api.mail.land/v1/auth/2fa/enable \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{"code": "123456"}'
Enable 2FA response
{
  "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
2FA verify request
{
  "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.

Verify 2FA code
curl -X POST https://api.mail.land/v1/auth/2fa/verify \
  -H "Content-Type: application/json" \
  -d '{
    "challengeId": "2fa_challenge_abc123",
    "code": "123456"
  }'
2FA verify response
{
  "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
Backup code verify request
{
  "challengeId": "2fa_challenge_abc123",
  "code": "a1b2c3d4"
}

Alan backupCode değil, code'dur (8-10 karakter).

Verify backup code
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
Yedek kodları yenileme isteği
{
  "code": "123456"
}
Yedek kodları yenile
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"}'
Yedek kodları yenileme yanıtı
[
  "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/status
Check 2FA status
curl https://api.mail.land/v1/auth/2fa/status \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
2FA status response
{
  "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/devices
List trusted devices
curl https://api.mail.land/v1/auth/2fa/devices \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Trusted devices response
[
  {
    "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.

Revoke a device
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/devices
Revoke all devices
curl -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
Disable 2FA request
{
  "code": "123456"
}
Disable 2FA
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.

DurumKodAçıklama
400INVALID_REQUESTGeçersiz veya süresi dolmuş kod, yanlış durum, yeniden kullanılan yedek kod vb.
400VALIDATION_FAILEDİstek gövdesi alan doğrulamasında başarısız oldu (örn. yanlış kod uzunluğu, eksik alan)
404RESOURCE_NOT_FOUNDCihaz bulunamadı

Sonraki Adımlar

Bu sayfada