Bảo mật sinh trắc
bao mat sinh tracKhoá sinh trắc trên thiết bị (Secure Enclave, Android Keystore) và challenge ký để duyệt lệnh trên ứng dụng di động. khoa sinh trac tren thiet bi (secure enclave, android keystore) va challenge ky de duyet lenh tren ung dung di dong.Khoá sinh trắc trên thiết bị (Secure Enclave, Android Keystore) và challenge ký để duyệt lệnh trên ứng dụng di động.
Endpoint
Phần tiêu đề “Endpoint”| Method | Path | Tóm tắt | Quyền | Nhóm tốc độ | Tương tác |
|---|---|---|---|---|---|
GET | /v1/approvals/{id}/challenge | Lấy challenge ký sinh trắc duyệt lệnh | notify.pref.self | write | Scalar |
GET | /v1/me/approval-keys | Danh sách khoá sinh trắc đã đăng ký | notify.pref.self | read | Scalar |
POST | /v1/me/approval-keys | Đăng ký khoá sinh trắc duyệt lệnh | notify.pref.self | write | Scalar |
DELETE | /v1/me/approval-keys/{key_id} | Thu hồi khoá sinh trắc | notify.pref.self | write | Scalar |
Chi tiết endpoint
Phần tiêu đề “Chi tiết endpoint”GET /v1/approvals/{id}/challenge
Phần tiêu đề “GET /v1/approvals/{id}/challenge”Lấy challenge ký sinh trắc duyệt lệnh
Tạo nonce dùng một lần (hết hạn 60s) gắn chặt với approval_id và payload_hash để ứng dụng di động ký sinh trắc.
Quyền: notify.pref.self- Nhóm tốc độ:
write - Phản hồi thành công
200: Challenge ký sinh trắc. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
id | path | Có | string | — |
curl -sS -X GET "https://api.dongtien.pro/v1/approvals/$ID/challenge" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/approvals/{id}/challenge", { params: { path: { "id": "<id>" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.bao_mat_sinh_trac import get_approval_challenge
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = get_approval_challenge.sync(id="<id>", client=dt.client)GET /v1/me/approval-keys
Phần tiêu đề “GET /v1/me/approval-keys”Danh sách khoá sinh trắc đã đăng ký
Liệt kê các thiết bị và khoá sinh trắc đang có hiệu lực của người dùng.
Quyền: notify.pref.self- Nhóm tốc độ:
read - Phản hồi thành công
200: Danh sách khoá. —object,application/json - Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/me/approval-keys" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.GET("/v1/me/approval-keys");import os
from dongtien import DongTienfrom dongtien_api.api.bao_mat_sinh_trac import list_approval_keys
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = list_approval_keys.sync(client=dt.client)POST /v1/me/approval-keys
Phần tiêu đề “POST /v1/me/approval-keys”Đăng ký khoá sinh trắc duyệt lệnh
Đăng ký khoá EC P-256 từ Secure Enclave (iOS) hoặc Android Keystore với chữ ký xác minh sở hữu. Cần step-up còn hiệu lực (passkey/TOTP). Chỉ phiên người dùng (session) được đăng ký, cấm OAuth. Một key_id đã tồn tại (khác khoá công khai hoặc đã thu hồi) bị từ chối 409, không bao giờ được ghi đè.
Quyền: notify.pref.self Cần xác thực lại gần đây- Nhóm tốc độ:
write - Nội dung yêu cầu:
object(application/json, bắt buộc) - Phản hồi thành công
200: Khoá đã đăng ký. —object,application/json - Mã lỗi riêng của endpoint:
step_up_required,conflict
curl -sS -X POST "https://api.dongtien.pro/v1/me/approval-keys" \ -H "Authorization: Bearer $DT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "key_id": "ios-se-key-01", "pubkey": "BEl62iUYgUivxIkv69yViEuiBIa40HI0DLLuxazjqAKVXTJtkTXH3gZLBgYfG0k8BMVdRsaRzxkeSyQY4Mb5Zg4", "platform": "ios", "signature": "MEUCIQDk3Zl1h0m0n9yq6c0d8v2a7Qx5r1sWJp4uT8bN3eYkGgIgS2fA9vLw1xQeR7tZc0pHnUo5dYjB6mK8iVaXl4cE3sM="}'import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.POST("/v1/me/approval-keys", { body: { "key_id": "ios-se-key-01", "pubkey": "BEl62iUYgUivxIkv69yViEuiBIa40HI0DLLuxazjqAKVXTJtkTXH3gZLBgYfG0k8BMVdRsaRzxkeSyQY4Mb5Zg4", "platform": "ios", "signature": "MEUCIQDk3Zl1h0m0n9yq6c0d8v2a7Qx5r1sWJp4uT8bN3eYkGgIgS2fA9vLw1xQeR7tZc0pHnUo5dYjB6mK8iVaXl4cE3sM=" },});import os
from dongtien import DongTienfrom dongtien_api.api.bao_mat_sinh_trac import register_approval_key
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = register_approval_key.sync( client=dt.client, body={ "key_id": "ios-se-key-01", "pubkey": "BEl62iUYgUivxIkv69yViEuiBIa40HI0DLLuxazjqAKVXTJtkTXH3gZLBgYfG0k8BMVdRsaRzxkeSyQY4Mb5Zg4", "platform": "ios", "signature": "MEUCIQDk3Zl1h0m0n9yq6c0d8v2a7Qx5r1sWJp4uT8bN3eYkGgIgS2fA9vLw1xQeR7tZc0pHnUo5dYjB6mK8iVaXl4cE3sM=", }, )DELETE /v1/me/approval-keys/{key_id}
Phần tiêu đề “DELETE /v1/me/approval-keys/{key_id}”Thu hồi khoá sinh trắc
Huỷ kích hoạt khoá sinh trắc khi xoá máy hoặc mất thiết bị.
Quyền: notify.pref.self- Nhóm tốc độ:
write - Phản hồi thành công
200: Đã thu hồi khoá. —object,application/json - Mã lỗi riêng của endpoint:
resource_not_found,conflict
Tham số
Phần tiêu đề “Tham số”| Tên | Vị trí | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|---|
key_id | path | Có | string | — |
curl -sS -X DELETE "https://api.dongtien.pro/v1/me/approval-keys/$KEY_ID" \ -H "Authorization: Bearer $DT_API_KEY"import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
const { data } = await dt.DELETE("/v1/me/approval-keys/{key_id}", { params: { path: { "key_id": "<key_id>" }, },});import os
from dongtien import DongTienfrom dongtien_api.api.bao_mat_sinh_trac import delete_approval_key
with DongTien(api_key=os.environ["DT_API_KEY"]) as dt: result = delete_approval_key.sync(key_id="<key_id>", client=dt.client)