Müşteri Güvenliği

1.8k görüntülenme Markdown

Şifreyi, doğrulamayı, iki adımlı girişi ve müşteriye özel güvenlik kurallarını yöneten beş uç.

Genel Bakış

Bu beş uç müşterinin hesabına operatör tarafından uygulanan güvenlik kararlarını taşır: şifreyi değiştirmek, bir alanı doğrulanmış saymak, iki adımlı doğrulamayı açmak, giriş ve ödeme kurallarını sıkmak, destek hakkını kısmak.

Hiçbiri müşteriye soru sormaz. Hepsi doğrudan uygulanır, o yüzden bu uçları taşıyan bir anahtarın kapsamı dar tutulur.

Referans

Şifre Değiştirme

put/api/v1/admin/clients/{id}/password
Clients/SetClientPassword admin eski şifre sorulmaz

Müşterinin şifresini doğrudan değiştirir. Mevcut şifre istenmez.

Gövde 2
passwordstringzorunluYeni şifre. En az options/password-length karakter; varsayılan 6.
password_confirmationstringGönderilirse password ile birebir aynı olmalı. Göndermezseniz doğrulama yapılmaz.
Dönen alanlar data — 1
changedboolŞifre değiştirildi mi.
Hatalar 5
not_found404Müşteri bulunamadı.
password_required422Şifre boş.
password_too_short422Şifre en küçük uzunluğun altında. Sınır error.details.min ile geri döner.
password_mismatch422Şifre tekrarı şifreyle eşleşmiyor.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/clients/42/password' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"password":"Str0ngP@ssw0rd","password_confirmation":"Str0ngP@ssw0rd"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/password', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    password: 'Str0ngP@ssw0rd',
    password_confirmation: 'Str0ngP@ssw0rd',
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/password');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'password'              => $newPassword,
        'password_confirmation' => $newPassword,
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->SetClientPassword([
    'id'       => 42,
    'password' => $newPassword,
]);

E-posta ve Telefon Doğrulama

post/api/v1/admin/clients/{id}/verify
Clients/VerifyClient admin

Bir alanı doğrulanmış olarak işaretler. Müşteriye kod gönderilmez; işaret doğrudan konur.

Gövde 1
typestringzorunluemail ya da phone.
Dönen alanlar data — 2
verifiedboolDoğrulama uygulandı mı.
typestringDoğrulanan alan: email ya da phone.
Hatalar 3
not_found404Müşteri bulunamadı.
type_invalid422type iki değerden biri değil.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/clients/42/verify' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"type":"email"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/verify', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ type: 'email' }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/verify');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['type' => 'email']),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Kendi doğrulama akışınızı çalıştırdıktan sonra işareti buradan koyarsınız.
$response = Api::Clients()->VerifyClient([
    'id'   => 42,
    'type' => 'email',
]);

İki Adımlı Doğrulama

put/api/v1/admin/clients/{id}/2fa
Clients/SetClient2fa admin

Müşterinin iki adımlı doğrulamasını açar ya da kapatır; kodunu teslim edemeyecek bir yöntem reddedilir ve hiçbir şey yazılmaz. Kapatmak müşterinin açık oturumlarını da kapatır ve güvenilen cihazlarını siler.

Gövde 2
enabledboolzorunluAçar ya da kapatır.
methodstringAçılacak yöntem: Email ya da Sms. Yöntem 2FA yöntem listesinde etkin olmalı ve teslim kanalının modülü kurulu olmalıdır (Email için mail/SMTP, Sms için SMS); Sms ayrıca müşteride bir cep telefonu numarası ister. Totp müşterinin kendi doğrulayıcı kurulumunu gerektirdiği için reddedilir. Yalnız açarken zorunlu; kapatırken gerekmez.
Dönen alanlar data — 2
enabledboolGüncel iki adımlı doğrulama durumu.
methodstringSeçilen modülün adı. Etkinleştirmede döner, kapatmada gelmez.
Hatalar 7
not_found404Müşteri bulunamadı.
method_required422Etkinleştirme isteğinde method yok.
method_unknown422Yöntem bilinmiyor, 2FA yöntem listesinde etkin değil ya da modülü yok. details method taşır.
method_requires_setup422Yöntem müşterinin kendi kurulumunu gerektiriyor (Totp); müşteri onu kendi hesabından açar. details method taşır.
delivery_channel_unavailable422Yöntemin teslim kanalında modül yok: Email mail modülü, Sms SMS modülü ister. details method ve channel (mail ya da sms) taşır.
recipient_missing422Sms seçildi ama müşterinin cep telefonu numarası yok. details method taşır.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/clients/42/2fa' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":true,"method":"Email"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/2fa', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ enabled: true, method: 'Email' }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/2fa');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'enabled' => true,
        'method'  => 'Email',
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Kapatırken method göndermeye gerek yok.
$response = Api::Clients()->SetClient2fa([
    'id'      => 42,
    'enabled' => false,
]);

Güvenlik Ayarları

patch/api/v1/admin/clients/{id}/security-settings
Clients/UpdateClientSecuritySettings admin

Müşteriye özel güvenlik kurallarını değiştirir. Yalnız gönderdiğiniz alan değişir.

Gövde 6
block_proxyboolProxy arkasından girişi engeller.
allow_proxyboolBu müşteriyi proxy kontrolünden muaf tutar.
require_birthdayboolDoğum tarihini zorunlu kılar.
require_adult_agebool18 yaş üstü doğrulaması ister.
force_document_filtersint[]Zorunlu tutulacak belge doğrulama filtrelerinin kimlikleri. Liste: clients/document-filters.
blocked_gatewaysstring[]Bu müşteriye kapatılan ödeme yöntemlerinin anahtarları.
Dönen alanlar data — 6
block_proxyboolProxy arkasından giriş engelli mi. Gönderdiğiniz parça değil, durumun tamamı döner.
allow_proxyboolMüşteri proxy kontrolünden muaf mı.
require_birthdayboolDoğum tarihi zorunlu mu.
require_adult_agebool18 yaş üstü doğrulaması açık mı.
force_document_filtersint[]Zorunlu tutulan belge doğrulama filtrelerinin kimlikleri.
blocked_gatewaysstring[]Bu müşteriye kapatılan ödeme yöntemlerinin anahtarları.
Hatalar 2
not_found404Müşteri bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/clients/42/security-settings' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"block_proxy":true,"blocked_gateways":["PayPal"]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/security-settings', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ block_proxy: true, blocked_gateways: ['PayPal'] }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/security-settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'block_proxy'      => true,
        'blocked_gateways' => ['PayPal'],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->UpdateClientSecuritySettings([
    'id'          => 42,
    'block_proxy' => true,
]);

Destek Ayarları

patch/api/v1/admin/clients/{id}/support-settings
Clients/UpdateClientSupportSettings admin

Müşterinin destek talebi açma hakkını kısıtlar ya da tamamen kapatır.

Gövde 2
ticket_restrictedboolTalep açmayı kısıtlar.
ticket_blockedboolTalep açmayı tamamen engeller. Her müşteride çalışır. Kara listedeki müşteride kara listenin block_tickets kısıtlamasıyla birlikte yazılır; öteki kısıtlamalara dokunulmaz.
Dönen alanlar data — 2
ticket_restrictedboolTalep açma kısıtlı mı. Gönderdiğiniz parça değil, durumun tamamı döner.
ticket_blockedboolTalep açma engelli mi. Yürürlükteki engeli gösterir: yalnız kara liste kısıtlamasıyla engellenmiş müşteride de açıktır.
Hatalar 2
not_found404Müşteri bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/clients/42/support-settings' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ticket_restricted":true}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/support-settings', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ ticket_restricted: true }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/support-settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['ticket_restricted' => true]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->UpdateClientSupportSettings([
    'id'                => 42,
    'ticket_restricted' => true,
]);

Tuzaklar

Şifre değişimi eski şifreyi sormaz

Uç bir operatör aracıdır: mevcut şifreyi bilmeden yenisini yazar. Müşterinin kendi şifresini değiştirdiği akış bu değildir, o Müşteri API'sindedir.

Doğrulama kod göndermez

verify yalnız işareti koyar; müşteriye e-posta ya da SMS gitmez. Kendi doğrulama akışınızı çalıştırdıktan sonra çağırın, yerine değil.

İki proxy alanı birbirinin zıddıdır

block_proxy engeller, allow_proxy muaf tutar. İkisini birlikte açık göndermek çelişkili bir durum bırakır; hangisini istiyorsanız yalnız onu gönderin.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.