Müşteri Güvenliği

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

Gövde 2
enabledboolzorunluAçar ya da kapatır.
methodstringKullanılacak Authentication modülünün adı, örneğin GoogleAuthenticator. 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 3
not_found404Müşteri bulunamadı.
method_required422Etkinleştirme isteğinde method yok.
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":"GoogleAuthenticator"}'
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: 'GoogleAuthenticator' }),
});

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'  => 'GoogleAuthenticator',
    ]),
]);

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