বাংলা
বাংলা
Appearance
বাংলা
বাংলা
Appearance
badges.ninja একটি সর্বজনীন ক্রিপ্টোগ্রাফিক পরিচয় প্রকাশ করে যাতে তৃতীয় পক্ষ ডিজিটাল স্বাক্ষর বহনকারী ক্রেডেনশিয়াল যাচাই করতে পারে। এটি Open Badges 3.0 / W3C Verifiable Credentials সমর্থনের ভিত্তি।
এই এন্ডপয়েন্টগুলি সর্বজনীন এবং কোনো প্রমাণীকরণের প্রয়োজন নেই। এগুলি https://api.badges.ninja এর সাপেক্ষে।
প্ল্যাটফর্মের ইস্যুয়ার পরিচয় হল did:web শনাক্তকারী:
did:web:api.badges.ninjadid:web নিয়ম অনুসারে, এটি নিচের well-known পাথে পরিবেশিত DID ডকুমেন্টে রিজলভ হয়।
GET /.well-known/did.jsonDID ডকুমেন্ট ফেরত দেয় যা ইস্যুয়ারের সর্বজনীন সাইনিং কী (একটি Ed25519 JsonWebKey2020) কে তার assertionMethod হিসেবে প্রকাশ করে।
curl https://api.badges.ninja/.well-known/did.json{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/jws-2020/v1"
],
"id": "did:web:api.badges.ninja",
"verificationMethod": [
{
"id": "did:web:api.badges.ninja#<kid>",
"type": "JsonWebKey2020",
"controller": "did:web:api.badges.ninja",
"publicKeyJwk": { "kty": "OKP", "crv": "Ed25519", "x": "<base64url>" }
}
],
"assertionMethod": ["did:web:api.badges.ninja#<kid>"],
"authentication": ["did:web:api.badges.ninja#<kid>"]
}প্রতিক্রিয়ার কন্টেন্ট টাইপ হল application/did+json। ডকুমেন্টটি ক্যাশযোগ্য (এটি শুধুমাত্র কী রোটেশনের সময় পরিবর্তিত হয়)।
যে যাচাইকারীরা DID রিজলিউশনের চেয়ে JWK Set আবিষ্কার পছন্দ করেন তাদের জন্য:
GET /.well-known/jwks.jsoncurl https://api.badges.ninja/.well-known/jwks.json{
"keys": [
{
"kty": "OKP",
"crv": "Ed25519",
"x": "<base64url>",
"kid": "<thumbprint>",
"alg": "EdDSA",
"use": "sig"
}
]
}kid হল সর্বজনীন কীর RFC 7638 thumbprint এবং এটি DID ডকুমেন্টের verificationMethod id-এর ফ্র্যাগমেন্টের সাথে মেলে।
প্রতিটি award একটি Open Badges 3.0 / W3C Verifiable Credential হিসেবে পুনরুদ্ধার করা যায়, উপরের ইস্যুয়ার কী দিয়ে স্বাক্ষরিত।
GET /certify-badge/award/{guid}/vc| কোয়েরি | ফলাফল |
|---|---|
(ডিফল্ট) বা ?format=jwt | স্বাক্ষরিত VC-JWT (application/jwt) — একটি OB 3.0 ওয়ালেটে ইমপোর্ট করুন। |
?format=json | স্বাক্ষরবিহীন OpenBadgeCredential JSON (application/vc+ld+json) — পরিদর্শনের জন্য। |
# Signed credential (VC-JWT)
curl https://api.badges.ninja/certify-badge/award/<guid>/vc
# Human-readable credential JSON
curl "https://api.badges.ninja/certify-badge/award/<guid>/vc?format=json"ক্রেডেনশিয়ালটি একটি ["VerifiableCredential", "OpenBadgeCredential"] টাইপযুক্ত VC (কনটেক্সট https://www.w3.org/ns/credentials/v2 এবং OB 3.0 কনটেক্সট)। এর issuer.id হল did:web:api.badges.ninja, এবং অ্যাচিভমেন্ট, প্রাপকের পরিচয় (হ্যাশ করা ইমেইল), এবং ইস্যু/মেয়াদ শেষের তারিখগুলি award থেকে আসে।
টোকেনটি একটি EdDSA স্বাক্ষর সহ একটি কমপ্যাক্ট JWS। যাচাই করতে:
header.payload.signature-এ ভাগ করুন।kid পড়ুন — এটি DID ডকুমেন্ট / JWKS-এ নির্দেশ করে।header.payload-এর উপর Ed25519 স্বাক্ষর যাচাই করুন।import crypto from "node:crypto";
const [h, p, s] = jwt.split(".");
const jwks = await (await fetch("https://api.badges.ninja/.well-known/jwks.json")).json();
const jwk = jwks.keys[0];
const pub = crypto.createPublicKey({ key: jwk, format: "jwk" });
const ok = crypto.verify(null, Buffer.from(`${h}.${p}`), pub, Buffer.from(s, "base64url"));প্রাপকরাও তাদের সর্বজনীন ক্রেডেনশিয়াল পৃষ্ঠার Download মেনু থেকে ক্রেডেনশিয়ালটি নিতে পারেন (Verifiable Credential)।
স্বাক্ষরগুলি Ed25519 (EdDSA) ব্যবহার করে। ব্যক্তিগত কী সার্ভার-সাইডে সংরক্ষিত এবং কখনও প্রকাশ করা হয় না; শুধুমাত্র উপরের সর্বজনীন কী প্রকাশ করা হয়।
প্রতিটি ক্রেডেনশিয়াল এর হোস্টেড Open Badge 2.0 অ্যাসারশনের মাধ্যমে আজও স্বাধীনভাবে যাচাইযোগ্য। অ্যাসারশন, ব্যাজ ও ইস্যুয়ার JSON এন্ডপয়েন্টের জন্য সর্বজনীন যাচাইকরণ দেখুন, এবং প্রাপক-মুখী যাচাইকরণ পৃষ্ঠার জন্য শেয়ারিং ও যাচাইকরণ দেখুন।