کارت و مورد
کارت مجموعهای امضاشده از موارد اطلاعاتی در کیف پول کاربر است. هر مورد شناسهای دارد، مانند bisotun.main.app.pseudonym (شناسهٔ حساب).
یک ابزارک وب آماده، کد QR و دکمهٔ مخصوص گوشی را نمایش میدهد. سرور شما درخواست را امضا میکند و یک نتیجهٔ امضاشده و تأییدشده دریافت میکند. شما هرگز با اثباتها یا کلیدهای کاربرانتان سروکار ندارید.
کارت مجموعهای امضاشده از موارد اطلاعاتی در کیف پول کاربر است. هر مورد شناسهای دارد، مانند bisotun.main.app.pseudonym (شناسهٔ حساب).
سرور پشتیبان (back end) شما. با یک نام در بیستون ثبت میشود، همراه با کلید عمومی RSA شما (توصیهشده) یا یک رمز مشترک HMAC، و فقط برای موارد مشخصی مجوز میگیرد.
https://cert.bisotun.app. هر درخواست را اجرا میکند، با کیف پول ارتباط برقرار میکند، اثبات را بررسی میکند و نتیجه را به شما برمیگرداند.
@bisotun/frontend، که در /sdk/bisotun.js ارائه میشود. کد QR، دکمهٔ «باز کردن کیف پول بیستون» روی گوشی و مرحلهٔ جفتسازی را نمایش میدهد؛ به فارسی، عربی و انگلیسی و با پشتیبانی از راستبهچپ.
مرورگر سرور پشتیبان شما را فرا میخواند. سرور پشتیبان یک درخواست ارائهٔ اطلاعات میسازد، آن را به شکل JWT امضا میکند و به https://cert.bisotun.app/session میفرستد.
سرور نشست با یک اشارهگر نشست (session pointer)، یک توکن مخفی درخواستکننده و یک درخواست سمت کاربر (frontend request) پاسخ میدهد. توکن را روی سرور خود نگه میدارید و اشارهگر و درخواست سمت کاربر را به ابزارک برمیگردانید.
ابزارک کد 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: 'fa',
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>
راهنمای توسعهدهندگان همهٔ گزینهها را نشان میدهد؛ از جمله مسیر نقاط اتصال، نسخهٔ پنجرهٔ بازشو (popup)، تنظیم ظاهر و مدخلهای لازم برای 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 و وضعیت همهٔ موارد درست باشد.هر آنچه لازم دارید در راهنما آمده است.