मुख्य सामग्री पर जाएं

प्रमाणीकरण

सभी IDCloud APIs (Web & SDK और API contracts) OAuth2 with JWT Bearer Grant Type (RFC 7523) का उपयोग करते हैं। आप अपने back-end पर एक short-lived JWT assertion उत्पन्न करते हैं, उसे Bearer token के लिए exchange करते हैं, और उस token का उपयोग हर बाद की call में करते हैं।

यह कभी भी client side पर न करें

JWT assertion केवल आपके back-end पर उत्पन्न किया जाना चाहिए। अपनी private key को front-end code, mobile apps, repositories, या logs में कभी भी उजागर न करें।

Credentials प्राप्त करना

Token उत्पन्न करने से पहले, आपको Unico द्वारा प्रावधानित एक service account की आवश्यकता है। Unico support से संपर्क करें और प्रदान करें:

  • Service account नाम (अधिकतम 12 characters)
  • जिम्मेदार व्यक्ति का नाम, ईमेल और फ़ोन (केवल Brazil, US या Mexico नंबर)

आपको प्राप्त होगा:

  • अद्वितीय account नाम
  • Tenant ID
  • Base JWT payload
  • Private key file (.pem format)
प्रति वातावरण एक account

UAT और Production के लिए अलग service accounts रखें।

JWT assertion बनाना

Assertion एक JWT है compact JWS format में: {Base64url(Header)}.{Base64url(Payload)}.{Base64url(Signature)}

Header
{
"alg": "RS256",
"typ": "JWT"
}
Payload
Claimमाननोट्स
iss<account_name>@<tenant_id>.iam.acesso.ioआपके credentials के साथ प्रदान किया गया
audhttps://identityhomolog.acesso.io (UAT) या https://identity.acesso.io (Production)token endpoint host से मेल खाना चाहिए
scope*सभी अनुमतियाँ प्रदान करता है
iatUnix timestamp (seconds)JWT जारी होने का समय
expiat + अधिकतम 3600iat से 1 घंटे से अधिक नहीं हो सकता
{
"aud": "https://identity.acesso.io",
"scope": "*",
"iat": 1738086000,
"exp": 1738089600
}
Signature

Unico द्वारा प्रदान की गई .pem private key के साथ RS256 (RSA + SHA-256) का उपयोग करके header + payload sign करें।

अतिरिक्त claims न जोड़ें

ऊपर सूचीबद्ध नहीं किया गया कोई भी फ़ील्ड (जैसे sub, jti, nbf) 1.2.22 त्रुटि का कारण बनेगा। केवल दिखाए गए claims का उपयोग करें।

Token का अनुरोध करना

Token endpoint दोनों contracts के लिए समान है:

वातावरणEndpoint
ProductionPOST https://identity.acesso.io/oauth2/token
UATPOST https://identityhomolog.acesso.io/oauth2/token
Request
पैरामीटरमान
Content-Typeapplication/x-www-form-urlencoded
grant_typeurn:ietf:params:oauth:grant-type:jwt-bearer
assertionआपका signed JWT
curl -X POST https://identity.acesso.io/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer" \
-d "assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
Response
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600
}
फ़ील्डप्रकारविवरण
access_tokenstringJWT access token। सभी API calls पर Authorization: Bearer <token> में उपयोग करें।
expires_inintegerसेकंड में समाप्ति समय। उदाहरण: 3600
token_typestringहमेशा Bearer

Token का उपयोग करना

हर API request के Authorization header में token जोड़ें। Header दोनों contracts के लिए समान है — जो भिन्न होता है वह आपके द्वारा call किए जा रहे API का host और path है:

ContractProduction hostUAT host
Web & SDKhttps://api.idcloud.unico.apphttps://api.idcloud.uat.unico.app
APIhttps://api.id.unico.apphttps://api.id.uat.unico.app

Web & SDKAuthorization एकमात्र आवश्यक auth header है:

curl -X POST https://api.idcloud.unico.app/client/v1/process \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ ... }'

APIAuthorization के साथ APIKEY header का उपयोग किया जाता है:

curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-d '{ ... }'

Token नवीनीकरण

Tokens 3600 सेकंड के बाद समाप्त होते हैं। अपने back-end में सक्रिय नवीनीकरण implement करें:

  • Token प्रतिक्रिया से expires_in track करें और समाप्ति timestamp संग्रहीत करें।
  • समाप्ति से 10 मिनट या उससे कम बचे होने पर नया token अनुरोध करें।
  • नवीनीकरण trigger करने के लिए production में 401 की प्रतीक्षा कभी न करें।

API reference

Token endpoint का पूर्ण OpenAPI विनिर्देश authentication.yaml में उपलब्ध है।

विधिPathविवरण
POST/oauth2/tokenBearer access token के लिए signed JWT assertion exchange करें

त्रुटि कोड

कोडविवरणकार्रवाई
1.0.1iss निर्माण में प्रदान की गई ID गलत हैसत्यापित करें कि iss फ़ील्ड private key उत्पन्न होने पर प्रदान किए गए tenant ID से मेल खाता है
1.0.14Application सक्रिय नहीं हैproject manager से जांचें कि उपयोग की जा रही application सक्रिय है या नहीं
1.1.1scope पैरामीटर प्रदान नहीं किया गयाअपने JWT payload में "scope": "*" जोड़ें
1.2.4JWT assertion अमान्यJWT assertion अब मान्य नहीं है। दो कारण: (a) वर्तमान समय exp से आगे है (JWT सच में समाप्त हो गया — प्रत्येक token request के लिए नया assertion उत्पन्न करें); या (b) exp iat + 3600 से अधिक है (जीवनकाल बहुत लंबा — exp को iat + 3600 पर सीमित करें)।
1.2.5JWT सत्यापन विफलJWT को सत्यापित नहीं किया जा सकता। पैरामीटर सत्यापित करें और सुनिश्चित करें कि यह RS256 और सही private key से sign किया गया है
1.2.6Private key अब मान्य नहीं हैJWT sign करने के लिए उपयोग की गई private key अब स्वीकार्य नहीं है। account के लिए नए credentials अनुरोध करें
1.2.7JWT पहले ही उपयोग किया जा चुका हैJWT अब स्वीकार्य नहीं है क्योंकि इसका पहले ही उपयोग किया जा चुका है। प्रत्येक token request के लिए नया assertion उत्पन्न करें
1.2.11Account सक्रिय नहीं हैउपयोग किया गया account सक्रिय नहीं है
1.2.14Account में आवश्यक अनुमतियाँ नहीं हैंउपयोग किए गए account में आवश्यक अनुमतियाँ नहीं हैं
1.2.18Account अस्थायी रूप से लॉक हैअमान्य प्रमाणीकरण प्रयासों की संख्या से अधिक होने के कारण account अस्थायी रूप से लॉक किया गया है
1.2.19अनधिकृत user impersonationJWT में एक sub claim है जो ऐसे account की ओर इशारा करता है जो impersonation के लिए अधिकृत नहीं है। payload से sub claim हटाएं।
1.2.20JWT decoding विफलJWT decode करने में विफल। token format सत्यापित करें और सुनिश्चित करें कि यह RS256 से sign किया गया है।
1.2.21गलत private key / Authentication विफलJWT signature को इस account की किसी भी ज्ञात key के विरुद्ध सत्यापित नहीं किया जा सका। सत्यापित करें कि आप इस service account और environment के लिए सही .pem private key उपयोग कर रहे हैं।
1.2.22Payload में अनुमत नहीं फ़ील्डJWT में अतिरिक्त payload फ़ील्ड हैं जो अनुमत नहीं हैं। इस guide में सूचीबद्ध नहीं किए गए किसी भी claim को हटाएं (जैसे sub, jti, nbf)। नोट: यदि आपने sub claim शामिल की और 1.2.19 प्राप्त हुआ, तो वह त्रुटि प्राथमिकता लेती है।
1.3.1IP access प्रतिबंधआपका IP इस account के लिए allowlist में नहीं है
1.3.2समय-आधारित access प्रतिबंधअनुरोध इस account के लिए अनुमत समय विंडो के बाहर है

आगे क्या