البطاقة والعنصر
البطاقة مجموعة موقّعة من العناصر في محفظة المستخدم. ولكل عنصر معرّف مثل bisotun.main.app.pseudonym (معرّف الحساب).
تعرض أداة ويب جاهزة رمز QR وزر الهاتف. يوقّع خادمك الطلب ويتلقّى نتيجة موقّعة وموثَّقة. ولا تتعامل أبدًا مع أدلة مستخدميك أو مفاتيحهم.
البطاقة مجموعة موقّعة من العناصر في محفظة المستخدم. ولكل عنصر معرّف مثل bisotun.main.app.pseudonym (معرّف الحساب).
نظامك الخلفي. يُسجَّل لدى بيستون باسم محدد، مع مفتاح RSA العام الخاص بك (مستحسن) أو سرّ HMAC مشترك، وبصلاحية طلب عناصر محددة فقط.
https://cert.bisotun.app. يدير كل طلب، ويتواصل مع المحفظة، ويتحقق من الدليل، ويعيد إليك النتيجة.
@bisotun/frontend، المتاحة على /sdk/bisotun.js. تعرض رمز QR، وزر «فتح محفظة بيستون» على الهواتف، وخطوة الاقتران، بالفارسية والعربية والإنجليزية مع دعم الكتابة من اليمين إلى اليسار.
يستدعي المتصفح نظامك الخلفي. فيُنشئ نظامك الخلفي طلب إفصاح، ويوقّعه بصيغة JWT، ويرسله إلى https://cert.bisotun.app/session.
يردّ خادم الجلسات بمؤشر جلسة، ورمز سري للجهة الطالبة، وطلب للواجهة الأمامية. تحتفظ بالرمز السري على خادمك، وتعيد المؤشر وطلب الواجهة الأمامية إلى الأداة.
تعرض الأداة رمز QR أو الزر. يفتح المستخدم الطلب في محفظة بيستون، فيشارك أو يرفض.
يتحقق خادم الجلسات من الدليل ويرسل النتيجة، بصيغة JWT موقّعة بمفتاحه، إلى عنوان callbackUrl الخاص بك عبر HTTPS.
يتحقق نظامك الخلفي من التوقيع، ومن أن status هي DONE وproofStatus هي VALID وأن حالة كل عنصر PRESENT، ثم يُسجّل دخول المستخدم أو يتابع.
لا يرى المتصفح أبدًا مفتاحك ولا الرمز السري للجهة الطالبة، ولا يستطيع تغيير ما هو مطلوب.
<section id="bisotun-form"></section>
<script src="https://wallet.bisotun.app/sdk/bisotun.js"></script>
<script>
bisotun.newWeb({
element: '#bisotun-form',
language: 'ar',
session: {
url: '/api/bisotun', // YOUR back end
start: { url: (o) => `${o.url}/start`, method: 'POST' },
result: { url: (o, { sessionToken }) => `${o.url}/result/${sessionToken}` },
},
}).start()
.then((result) => { /* logged in */ })
.catch((endState) => { /* Cancelled, TimedOut, ... */ });
</script>
يعرض دليل المطوّرين جميع الخيارات، بما فيها مسارات نقاط الاتصال، ونسخة النافذة المنبثقة، وتخصيص المظهر، وإدخالات سياسة أمان المحتوى (Content Security Policy) التي تحتاج إليها. ويمكنك أيضًا تقديم الحزمة ومجلد fonts/ الخاص بها من موقعك.
يحدّد الطلب الموقّع العناصر التي تحتاج إليها:
{
"iss": "your-requestor-name",
"iat": 1790640000,
"sub": "verification_request",
"sprequest": {
"callbackUrl": "https://your.site/api/bisotun/callback",
"request": {
"@context": "https://wallet.bisotun.app/ld/request/disclosure/v2",
"disclose": [[["bisotun.main.app.pseudonym"]]]
}
}
}
disclose قائمة بالعناصر المطلوبة؛ ويمكن أن يقدّم كل منها بدائل، ويمكن لكل بديل أن يجمع عناصر من بطاقة واحدة. ويمكنك أيضًا اشتراط قيمة محددة. وتُرفض الطلبات التي مضى عليها أكثر من ٥ دقائق، لذا احرص على مزامنة ساعة خادمك.
| العنصر | الحالة |
|---|---|
bisotun.main.app.pseudonym — معرّف حساب المحفظة، عشوائي وهو نفسه لدى كل موقع |
متاح |
bisotun.main.email.address — عنوان بريد إلكتروني وثّقته بيستون |
قريبًا |
| عناصر البطاقات التي تُصدرها جهات أخرى | عند انضمام جهات الإصدار تلك |
راسلنا على support@bisotun.app. أخبرنا بموقعك والعناصر التي تحتاج إليها.
اسم الجهة الطالبة الخاص بك، وصلاحية طلب العناصر المتّفق عليها، والمفتاح العام لخادم الجلسات للتحقق من النتائج. أرسل إلينا مفتاح RSA العام الخاص بك، أو استلم مفتاح HMAC.
اتّبع دليل المطوّرين، الذي يتضمن أمثلة كاملة بلغتي Node.js وPython، وقارن عملك مع العرض التجريبي، الذي يقدّم سيناريوه الرئيسي تسجيل الدخول هذا نفسه دون كلمة مرور باستخدام معرّف الحساب.
status وproofStatus وحالة كل عنصر.كل ما تحتاج إليه موجود في الدليل.