Authagonal

दस्तावेज़ीकरण

Authagonal के साथ शुरुआत करने के लिए आपको जो कुछ भी चाहिए — अपना पहला टेनेंट बनाने से लेकर SSO, SCIM, और कस्टम ब्रांडिंग को जोड़ने तक।

शुरुआत करना

Authagonal हर टेनेंट को एक पूरी तरह से standards-compliant OIDC सर्वर देता है। हर टेनेंट को अपना खुद का issuer URL, discovery document, और token endpoints मिलते हैं — टेनेंट के बीच कोई साझा इन्फ्रास्ट्रक्चर नहीं। आप 5 मिनट से भी कम समय में शून्य से एक कार्यशील लॉगिन फ़्लो तक पहुँच सकते हैं।

एक खाता बनाएँ

authagonal.io पर साइन अप करें और अपने खाते के लिए एक slug चुनें। यह slug आपका issuer डोमेन बन जाता है: {slug}.authagonal.io। अपना खाता बनाने के बाद, शुरुआत करने के लिए अपना ईमेल पता सत्यापित करें।

Authagonal signup page showing tenant slug input and email verification

साइनअप के दौरान अपने खाते के लिए एक अद्वितीय slug चुनें

एक क्लाइंट पंजीकृत करें

पोर्टल साइडबार में Clients पर जाएँ और Create पर क्लिक करें। अपने एप्लिकेशन के लिए एक clientId और clientName दर्ज करें। फिर कम से कम एक रीडायरेक्ट URI कॉन्फ़िगर करें — प्रमाणीकरण के बाद उपयोगकर्ताओं को यहीं भेजा जाता है। उदाहरण के लिए: https://app.example.com/callback

Client creation form with clientId, clientName, and redirect URI fields

पोर्टल में एक नया OAuth क्लाइंट पंजीकृत करें

लोकल डेवलपमेंट

लोकल डेवलपमेंट के लिए रीडायरेक्ट URI के रूप में http://localhost:3000/callback का उपयोग करें। Authagonal localhost origins के लिए non-HTTPS रीडायरेक्ट URIs की अनुमति देता है।

आपका पहला लॉगिन

एकीकृत करने का सबसे तेज़ तरीका oidc-client-ts है, जो JavaScript और TypeScript एप्लिकेशन के लिए एक हल्की OIDC क्लाइंट लाइब्रेरी है।

oidc-client-ts integration
import { UserManager } from 'oidc-client-ts';

const mgr = new UserManager({
  authority: 'https://acme.authagonal.io',
  client_id: 'my-app',
  redirect_uri: 'https://app.example.com/callback',
  response_type: 'code',
  scope: 'openid profile email',
});

// Redirect to login
mgr.signinRedirect();

// On callback page
const user = await mgr.signinRedirectCallback();
console.log(user.profile); // { sub, email, name, ... }

यदि आप किसी लाइब्रेरी के बिना न्यूनतम दृष्टिकोण पसंद करते हैं, तो आप सादे fetch के साथ मानक OAuth 2.0 authorization code flow का उपयोग कर सकते हैं:

Minimal fetch-based flow
// 1. Redirect the user to the authorization endpoint
const authorizeUrl = new URL('https://acme.authagonal.io/connect/authorize');
authorizeUrl.searchParams.set('client_id', 'my-app');
authorizeUrl.searchParams.set('redirect_uri', 'https://app.example.com/callback');
authorizeUrl.searchParams.set('response_type', 'code');
authorizeUrl.searchParams.set('scope', 'openid profile email');
authorizeUrl.searchParams.set('code_challenge', codeChallenge);
authorizeUrl.searchParams.set('code_challenge_method', 'S256');
window.location.href = authorizeUrl.toString();

// 2. On the callback page, exchange the code for tokens
const res = await fetch('https://acme.authagonal.io/connect/token', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    grant_type: 'authorization_code',
    code: new URLSearchParams(window.location.search).get('code')!,
    redirect_uri: 'https://app.example.com/callback',
    client_id: 'my-app',
    code_verifier: codeVerifier,
  }),
});

const tokens = await res.json();
// tokens.id_token, tokens.access_token, tokens.refresh_token
Authagonal login page with email and password fields, branded with tenant logo

आपके टेनेंट के लिए डिफ़ॉल्ट लॉगिन पेज

सैंडबॉक्स मोड

पहले सैंडबॉक्स मोड में अपने एकीकरण का परीक्षण करें। सैंडबॉक्स टेनेंट एक अलग URL ({slug}-sandbox.authagonal.io) का उपयोग करते हैं और लाइव उपयोगकर्ताओं को प्रभावित किए बिना किसी भी समय प्रोडक्शन से रीफ़्रेश किए जा सकते हैं।

डैशबोर्ड

पोर्टल डैशबोर्ड आपको आपके टेनेंट का रीयल-टाइम अवलोकन देता है। यह सबसे महत्वपूर्ण मेट्रिक्स को सामने लाता है — उपयोगकर्ता वृद्धि, प्रमाणीकरण गतिविधि, और पोर्टल की हर सुविधा तक त्वरित नेविगेशन।

अवलोकन

डैशबोर्ड के शीर्ष पर आपको आपकी वर्तमान कुल उपयोगकर्ता संख्या के साथ एक स्वागत संदेश दिखाई देगा। उसके नीचे, एक Daily Active Users चार्ट उन अद्वितीय उपयोगकर्ताओं का 7-दिवसीय इतिहास दिखाता है जिन्होंने हर दिन प्रमाणीकरण किया, जिससे आपको एंगेजमेंट रुझानों की त्वरित जानकारी मिलती है।

Full dashboard view showing welcome banner, user count, and Daily Active Users line chart

DAU चार्ट और गतिविधि अवलोकन के साथ डैशबोर्ड होम स्क्रीन

गतिविधि मेट्रिक्स

गतिविधि मेट्रिक्स पैनल प्रमुख प्रमाणीकरण इवेंट्स को सारांशित करने वाले चार स्टेट कार्ड दिखाता है:

  • Successful Logins — कुल पूर्ण किए गए प्रमाणीकरण फ़्लो
  • Failed Logins — गलत क्रेडेंशियल्स, लॉक किए गए खाते, या नीति अस्वीकृतियाँ
  • Active Users — चयनित अवधि में प्रमाणीकरण करने वाले अद्वितीय उपयोगकर्ता
  • SCIM Operations — कनेक्टेड IdPs से उपयोगकर्ता और ग्रुप provisioning इवेंट्स

24 घंटे, 3 दिन, 7 दिन, और 30 दिन के बीच स्विच करने के लिए टाइम रेंज फ़िल्टर का उपयोग करें। सभी स्टेट कार्ड और चार्ट चयनित विंडो को दर्शाने के लिए अपडेट हो जाते हैं।

Activity metrics panel with four stat cards and a time range filter bar showing 24h, 3d, 7d, and 30d options

कॉन्फ़िगर करने योग्य टाइम रेंज के साथ गतिविधि मेट्रिक्स

त्वरित नेविगेशन

मेट्रिक्स पैनल के नीचे, नेविगेशन कार्ड सीधे हर प्रमुख सुविधा से लिंक करते हैं: Clients, Users, Groups, Roles, SSO, SCIM, Branding, और Settings। हर कार्ड एक संक्षिप्त विवरण दिखाता है ताकि नए टीम सदस्य खुद को जल्दी से परिचित कर सकें।

क्लाइंट्स

OAuth क्लाइंट उन एप्लिकेशन का प्रतिनिधित्व करते हैं जो आपके टेनेंट के माध्यम से उपयोगकर्ताओं का प्रमाणीकरण करते हैं। हर क्लाइंट का redirect URIs, scopes, grant types, token lifetimes, और MFA policy के लिए अपना खुद का कॉन्फ़िगरेशन होता है।

क्लाइंट सूची

Clients पेज सभी पंजीकृत क्लाइंट्स की एक तालिका दिखाता है। हर पंक्ति clientId, डिस्प्ले नाम, रंगीन बैज के रूप में अनुमत grant types, और क्या PKCE सक्षम है, दिखाती है। पूर्ण कॉन्फ़िगरेशन संपादक खोलने के लिए किसी भी पंक्ति पर क्लिक करें।

Clients table showing clientId, name, grant type badges, and PKCE status for each registered application

grant type बैज और PKCE संकेतकों के साथ क्लाइंट सूची

एक क्लाइंट बनाना

एक नया एप्लिकेशन पंजीकृत करने के लिए Create Client पर क्लिक करें। आपको दो फ़ील्ड प्रदान करने होंगे:

  • clientId — क्लाइंट के लिए एक अद्वितीय पहचानकर्ता (उदा. my-spa)
  • clientName — एक मानव-पठनीय डिस्प्ले नाम
Create client form with clientId and clientName input fields

एक नया OAuth क्लाइंट पंजीकृत करें

एक क्लाइंट हटाना

किसी क्लाइंट को हटाने के लिए, क्लाइंट कॉन्फ़िगरेशन खोलें और पेज के नीचे Delete Client बटन पर क्लिक करें। क्लाइंट को स्थायी रूप से हटाए जाने से पहले आपसे पुष्टि करने के लिए कहा जाएगा। हटाए गए क्लाइंट के सभी सक्रिय सत्र और टोकन तुरंत अमान्य कर दिए जाते हैं।

क्लाइंट कॉन्फ़िगरेशन संदर्भ

हर क्लाइंट के पास कई अनुभागों में व्यवस्थित कॉन्फ़िगरेशन विकल्पों का एक व्यापक सेट होता है।

सामान्य सेटिंग्स

सेटिंगविवरणडिफ़ॉल्ट
clientNameसहमति स्क्रीन और पोर्टल में दिखाया जाने वाला डिस्प्ले नाम
requirePkceauthorization code flows पर Proof Key for Code Exchange आवश्यक करेंचालू
requireClientSecrettoken requests के लिए एक client secret आवश्यक करें (SPAs जैसे सार्वजनिक क्लाइंट्स के लिए अक्षम करें)बंद
allowOfflineAccessक्लाइंट को offline_access scope के माध्यम से refresh tokens का अनुरोध करने की अनुमति देंबंद
alwaysIncludeUserClaimsInIdTokenUserInfo कॉल की आवश्यकता के बजाय सभी user claims को सीधे ID token में शामिल करेंबंद
includeGroupsInTokensउपयोगकर्ता की ग्रुप सदस्यताओं को ID token में एक groups claim के रूप में शामिल करेंबंद

PKCE सुरक्षा

PKCE को अक्षम करने से authorization code flows की सुरक्षा कम हो जाती है। इसे केवल उन लीगेसी क्लाइंट्स के लिए अक्षम करें जो PKCE का समर्थन नहीं करते। सभी आधुनिक एप्लिकेशन को PKCE सक्षम रखना चाहिए।

URIs

URI फ़ील्ड एक टैग इनपुट का उपयोग करते हैं — एक मान टाइप करें और इसे जोड़ने के लिए Enter या comma दबाएँ। किसी भी टैग को हटाने के लिए उस पर X पर क्लिक करें।

सेटिंगविवरण
redirectUrisप्रमाणीकरण के बाद अनुमत callback URLs। authorization requests में redirect_uri पैरामीटर से बिल्कुल मेल खाना चाहिए।
postLogoutRedirectUrisलॉगआउट के बाद रीडायरेक्ट करने के लिए अनुमत URLs।
allowedCorsOriginstoken और UserInfo endpoints के लिए cross-origin requests हेतु अनुमत origins।
URI configuration section showing tag inputs for redirect URIs, post-logout URIs, and CORS origins

URIs कॉन्फ़िगर करने के लिए टैग इनपुट फ़ील्ड

Scopes और Grant Types

सेटिंगविकल्प
allowedScopesopenid profile email offline_access
allowedGrantTypesauthorization_code client_credentials refresh_token device_code

Token Lifetimes

सेटिंगविवरणडिफ़ॉल्ट
accessTokenLifetimeSecondsaccess tokens कितने समय तक मान्य हैं1800 (30 min)
identityTokenLifetimeSecondsID tokens कितने समय तक मान्य हैं300 (5 min)
authorizationCodeLifetimeSecondsauthorization codes एक्सचेंज के लिए कितने समय तक मान्य हैं300 (5 min)
absoluteRefreshTokenLifetimeSecondsगतिविधि की परवाह किए बिना एक refresh token का अधिकतम जीवनकाल2592000 (30 days)
slidingRefreshTokenLifetimeSecondsrefresh token की समाप्ति प्रत्येक उपयोग पर रीसेट हो जाती है, absolute lifetime तक1296000 (15 days)
Token lifetime configuration fields with numeric inputs for each lifetime setting

प्रति क्लाइंट token lifetimes कॉन्फ़िगर करें

Logout URIs

क्लाइंट back-channel और front-channel दोनों logout URIs पंजीकृत कर सकते हैं। दोनों में से कोई एक या दोनों वैकल्पिक हैं — जो भी इस बात से मेल खाता हो कि आपका एप्लिकेशन अपना सत्र कैसे साफ़ करता है, उसे कॉन्फ़िगर करें।

सेटिंगविवरण
backChannelLogoutUriएक signed logout token के साथ server-to-server POST। उपयोगकर्ता का ब्राउज़र ऑफ़लाइन होने पर भी विश्वसनीय।
frontChannelLogoutUriलॉगआउट के दौरान एक छिपे हुए iframe में रेंडर किया जाता है ताकि ब्राउज़र cookies और local storage साफ़ कर दे।
frontChannelLogoutSessionRequiredचालू होने पर, logout URL को iss और sid query parameters प्राप्त होते हैं ताकि आपका ऐप लॉगआउट को विशिष्ट सत्र के साथ सहसंबंधित कर सके।

दोनों का एक साथ उपयोग करें

Back-channel यह गारंटी देता है कि सर्वर को सूचित किया गया है; front-channel ब्राउज़र को साफ़ करता है। अधिकांश ऐप दोनों को कॉन्फ़िगर करने से लाभान्वित होते हैं।

MFA Policy

हर क्लाइंट प्रति-क्लाइंट सेटिंग के साथ टेनेंट-व्यापी MFA policy को ओवरराइड कर सकता है। MFA policy ड्रॉपडाउन तीन विकल्प प्रदान करता है:

नीतिव्यवहार
अक्षमइस क्लाइंट के लिए MFA कभी संकेत नहीं किया जाता
सक्षमउपयोगकर्ता वैकल्पिक रूप से MFA में नामांकित हो सकते हैं; नामांकित होने पर उन्हें संकेत किया जाएगा
आवश्यकइस क्लाइंट के माध्यम से प्रमाणीकरण के लिए सभी उपयोगकर्ताओं को MFA पूरा करना होगा
MFA policy dropdown showing Disabled, Enabled, and Required options on the client configuration page

प्रति-क्लाइंट MFA policy ओवरराइड

Enterprise SSO

Enterprise SSO आपके ग्राहकों को अपना खुद का identity provider लाने देता है। Authagonal domain-based routing के साथ SAML 2.0 और OIDC federation दोनों का समर्थन करता है, इसलिए उपयोगकर्ताओं को उनके ईमेल पते के आधार पर स्वचालित रूप से सही IdP पर निर्देशित किया जाता है।

SSO domain routing flow — shows how email domains are matched to SAML or OIDC identity providers

Domain-based SSO routing

SAML 2.0 कनेक्शन

एक SAML कनेक्शन बनाने के लिए, SSO पेज पर जाएँ और SAML टैब चुनें। निम्नलिखित प्रदान करें:

फ़ील्डविवरण
connectionNameइस कनेक्शन के लिए एक मानव-पठनीय नाम (उदा. "Acme Corp Okta")
entityIdबाहरी identity provider का SAML Entity ID
metadataUrlIdP के SAML metadata XML document का URL

जब आप कनेक्शन सहेजते हैं, तो Authagonal metadata document प्राप्त करता है और IdP का signing certificate, SSO endpoint URL, और name identifier format आयात करता है। certificate rotations को पकड़ने के लिए metadata को समय-समय पर रीफ़्रेश किया जाता है।

SAML connection creation form with fields for connection name, entity ID, and metadata URL

एक SAML 2.0 SSO कनेक्शन बनाएँ

OIDC कनेक्शन

एक OIDC federation कनेक्शन बनाने के लिए, OIDC टैब चुनें और प्रदान करें:

फ़ील्डविवरण
connectionNameइस कनेक्शन के लिए एक मानव-पठनीय नाम
discoveryUrlOpenID Connect discovery URL (उदा. https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration)
clientIdइस federation के लिए बाहरी IdP के साथ पंजीकृत client ID
clientSecretबाहरी IdP पंजीकरण के लिए client secret
OIDC connection creation form with fields for connection name, discovery URL, client ID, and client secret

एक OIDC federation कनेक्शन बनाएँ

Domain Routing

Domain routing उपयोगकर्ताओं को उनके ईमेल डोमेन के आधार पर स्वचालित रूप से सही identity provider पर रीडायरेक्ट करता है। जब कोई उपयोगकर्ता लॉगिन पेज पर अपना ईमेल दर्ज करता है, तो Authagonal जाँचता है कि क्या डोमेन भाग (उदा. acme.com) किसी कॉन्फ़िगर किए गए SSO कनेक्शन से मेल खाता है। यदि मेल खाता है, तो उपयोगकर्ता को सहजता से उनके संगठन के IdP पर रीडायरेक्ट कर दिया जाता है।

ईमेल डोमेनSSO Providerप्रोटोकॉल
acme.comAcme Corp OktaSAML 2.0
contoso.comContoso Azure ADOIDC
example.orgExample OneLoginSAML 2.0
Domain routing table showing email domains mapped to SSO connections with protocol type

Domain routing ईमेल डोमेन को identity providers से मैप करता है

SP-Initiated फ़्लो

SP-initiated फ़्लो डिफ़ॉल्ट है — उपयोगकर्ता आपके लॉगिन पेज पर शुरू करते हैं और स्वचालित रूप से सही IdP पर रूट किए जाते हैं। उपयोगकर्ताओं को /saml/{connectionId}/login या /oidc/{connectionId}/login के माध्यम से सीधे किसी विशिष्ट कनेक्शन से डीप-लिंक भी किया जा सकता है।

JIT Provisioning

डिफ़ॉल्ट रूप से, जब कोई उपयोगकर्ता पहली बार SSO के माध्यम से साइन इन करता है और आपके टेनेंट में पहले से मौजूद नहीं होता है, तो Authagonal स्वचालित रूप से उनका खाता बना देता है (Just-In-Time provisioning)। कनेक्शन बनाते या संपादित करते समय Disable JIT provisioning को चेक करके इसे प्रति कनेक्शन अक्षम किया जा सकता है।

जब JIT provisioning अक्षम होता है, तो केवल वे उपयोगकर्ता जिन्हें पहले से provision किया गया है — SCIM, पोर्टल के Users पेज, या API के माध्यम से — उस कनेक्शन के माध्यम से साइन इन कर सकते हैं। अज्ञात उपयोगकर्ताओं को एक access_denied त्रुटि प्राप्त होती है और उन्हें अपने व्यवस्थापक से संपर्क करने के लिए निर्देशित किया जाता है।

प्रति-कनेक्शन सेटिंग

JIT provisioning प्रति SSO कनेक्शन नियंत्रित होता है, टेनेंट-व्यापी नहीं। आपके पास एक कनेक्शन हो सकता है जो JIT की अनुमति देता है (उदा. एक साझेदार संगठन के लिए जो अपने खुद के उपयोगकर्ताओं का प्रबंधन करता है) और दूसरा जिसे pre-provisioning की आवश्यकता होती है (उदा. SCIM sync का उपयोग करने वाले किसी एंटरप्राइज़ ग्राहक के लिए)।

रोलआउट से पहले परीक्षण करें

प्रोडक्शन उपयोगकर्ताओं के लिए रोलआउट करने से पहले सैंडबॉक्स मोड के साथ SSO कनेक्शन का परीक्षण करें। यह आपको लाइव प्रमाणीकरण फ़्लो को प्रभावित किए बिना IdP कॉन्फ़िगरेशन, attribute mapping, और domain routing सत्यापित करने देता है।

उपयोगकर्ता

Users पेज आपको अपने टेनेंट में सभी एंड उपयोगकर्ताओं का प्रबंधन करने देता है। आप उपयोगकर्ताओं को खोज सकते हैं, उनके विवरण देख सकते हैं, नए खाते बना सकते हैं, और देख सकते हैं कि प्रत्येक उपयोगकर्ता को कैसे provision किया गया था।

खोज बार ईमेल पते या user ID के आधार पर फ़िल्टरिंग का समर्थन करता है। खोज 300ms पर debounced है ताकि API को अभिभूत किए बिना आपके टाइप करते ही परिणाम अपडेट हों। परिणाम प्रति पेज 50 उपयोगकर्ताओं पर paginated होते हैं — पेजों के बीच जाने के लिए तालिका के नीचे नेविगेशन नियंत्रणों का उपयोग करें।

उपयोगकर्ता तालिका

उपयोगकर्ता तालिका प्रत्येक उपयोगकर्ता के लिए निम्नलिखित कॉलम दिखाती है:

कॉलमविवरण
ईमेलउपयोगकर्ता का ईमेल पता, यदि ईमेल की पुष्टि हो गई है तो एक verification बैज के साथ दिखाया जाता है
User IDउपयोगकर्ता को सौंपा गया अद्वितीय पहचानकर्ता
पूरा नामपहला और अंतिम नाम संयुक्त
स्थितिActive या Inactive — इंगित करता है कि खाता सक्षम है या नहीं
MFAEnabled या Off — क्या multi-factor authentication नामांकित है
स्रोतSCIM या Local — उपयोगकर्ता कैसे बनाया गया था
बनाया गयावह तारीख जब उपयोगकर्ता खाता बनाया गया था
User list table with columns for email, user ID, name, status, MFA, source, and created date

खोज बार और pagination के साथ उपयोगकर्ता सूची

उपयोगकर्ता बनाना

एक नया लोकल उपयोगकर्ता जोड़ने के लिए Create User पर क्लिक करें। फ़ॉर्म के लिए आवश्यक है:

फ़ील्डविवरण
emailउपयोगकर्ता का ईमेल पता (टेनेंट के भीतर अद्वितीय होना चाहिए)
passwordप्रारंभिक पासवर्ड (न्यूनतम 8 वर्ण, आपके टेनेंट की password policy को पूरा करना चाहिए)
firstNameउपयोगकर्ता का पहला नाम
lastNameउपयोगकर्ता का अंतिम नाम
languageपसंदीदा भाषा। उपयोगकर्ता की UI और ईमेल भाषा सेट करती है; वैकल्पिक, English पर वापस आ जाती है।
Create user form with email, password, first name, last name, and preferred Language fields

एक नया लोकल उपयोगकर्ता बनाएँ

SCIM-Provisioned उपयोगकर्ता

SCIM के माध्यम से बनाए गए उपयोगकर्ता एक "SCIM" बैज के साथ चिह्नित होते हैं और उनका पासवर्ड पोर्टल के माध्यम से नहीं बदला जा सकता। उनका जीवनचक्र — निर्माण, अपडेट, और निष्क्रियकरण — पूरी तरह से upstream identity provider द्वारा प्रबंधित किया जाता है।

पसंदीदा भाषा

हर उपयोगकर्ता की एक पसंदीदा भाषा होती है जो उनकी hosted UI और Authagonal द्वारा उन्हें भेजे जाने वाले transactional emails (verification, password reset, welcome, और अधिक) दोनों को संचालित करती है। आप इसे उपयोगकर्ता बनाते समय सेट कर सकते हैं और उपयोगकर्ता के विवरण पेज से इसे किसी भी समय बदल सकते हैं। यदि किसी उपयोगकर्ता की कोई पसंदीदा भाषा सेट नहीं है, तो Authagonal English पर वापस आ जाता है। चयनकर्ता सभी समर्थित locales प्रदान करता है: English, German, French, Spanish, Portuguese, Vietnamese, और Simplified Chinese।

User detail edit form with profile fields including a preferred Language selector

विवरण पेज पर उपयोगकर्ता की पसंदीदा भाषा सेट करें

उपयोगकर्ता विवरण

इसका विवरण पेज खोलने के लिए उपयोगकर्ता सूची में किसी भी पंक्ति पर क्लिक करें। वहाँ से आप प्रोफ़ाइल डेटा संपादित कर सकते हैं, भूमिकाओं (roles) का प्रबंधन कर सकते हैं, MFA रीसेट कर सकते हैं, custom attributes की समीक्षा कर सकते हैं, और उपयोगकर्ता को हटा सकते हैं।

User detail page showing profile fields, status, assigned roles, and custom attributes

प्रोफ़ाइल

ईमेल, पहला/अंतिम नाम, फ़ोन, कंपनी, external ID संपादित करें, और उपयोगकर्ता के active flag को टॉगल करें। ईमेल परिवर्तन टेनेंट भर में अद्वितीय रहने चाहिए; यदि पहले से लिया गया है तो API email_in_use लौटाता है।

भूमिकाएँ (Roles)

Roles पेज पर परिभाषित भूमिकाएँ असाइन और अनअसाइन करें। जब क्लाइंट में includeRolesInTokens सक्षम होता है तो भूमिका सदस्यता ID और access tokens में सामने आती है।

Multi-Factor Authentication

उपयोगकर्ता के लिए पंजीकृत हर MFA credential देखें — authenticator app (TOTP), WebAuthn/passkeys, और recovery codes — प्रत्येक अपने खुद के registered/last-used timestamps के साथ। व्यक्तिगत credentials हटाएँ, या सभी MFA रीसेट करें। रीसेट करने से उपयोगकर्ता को अगले लॉगिन पर फिर से नामांकित होना पड़ता है।

Custom Attributes

उपयोगकर्ता से जुड़ा मनमाना key/value डेटा। keys अद्वितीय होनी चाहिए। Attributes user profile API और SCIM के माध्यम से उजागर होते हैं, और एक custom scope के userClaims को कॉन्फ़िगर करके इन्हें access-token claims से मैप किया जा सकता है।

उपयोगकर्ता हटाएँ

उपयोगकर्ता और उनके सभी MFA credentials को स्थायी रूप से हटा देता है। पुष्टि के लिए उपयोगकर्ता का ईमेल टाइप करें — इसे पूर्ववत नहीं किया जा सकता।

ग्रुप्स

ग्रुप्स आपको उपयोगकर्ताओं को व्यवस्थित करने और tokens में ग्रुप सदस्यता शामिल करने देते हैं। ग्रुप्स को पोर्टल में मैन्युअल रूप से बनाया जा सकता है या किसी बाहरी identity provider से SCIM के माध्यम से स्वचालित रूप से provision किया जा सकता है।

ग्रुप सूची

Groups पेज आपके टेनेंट में सभी ग्रुप्स को निम्नलिखित जानकारी के साथ दिखाता है:

कॉलमविवरण
ग्रुप नामग्रुप का डिस्प्ले नाम
सदस्यवर्तमान में ग्रुप में उपयोगकर्ताओं की संख्या
स्रोतSCIM या Manual — ग्रुप कैसे बनाया गया था
बनाया गयावह तारीख जब ग्रुप बनाया गया था
Groups list table showing group name, member count, source badge, and created date

स्रोत संकेतकों के साथ ग्रुप सूची

एक ग्रुप बनाना

Create Group पर क्लिक करें और ग्रुप के लिए एक displayName दर्ज करें। ग्रुप नाम वर्णनात्मक और आपके टेनेंट के भीतर अद्वितीय होने चाहिए (उदा. "Engineering", "Billing Admins", "Beta Testers")।

ग्रुप विवरण और सदस्य

विवरण दृश्य खोलने के लिए किसी भी ग्रुप पर क्लिक करें। यहाँ आप सभी वर्तमान सदस्यों को देख सकते हैं और सदस्यता का प्रबंधन कर सकते हैं:

  • Add members — किसी उपयोगकर्ता को ग्रुप में जोड़ने के लिए एक user ID दर्ज करें।
  • Remove members — किसी सदस्य को व्यक्तिगत रूप से हटाने के लिए उसके बगल में remove बटन पर क्लिक करें।
Group detail view showing member list with user IDs and a field to add new members

विवरण दृश्य में ग्रुप सदस्यता का प्रबंधन करें

Tokens में ग्रुप्स

जब किसी क्लाइंट पर includeGroupsInTokens सक्षम होता है, तो ID token में एक groups claim शामिल होता है जिसमें उपयोगकर्ता की ग्रुप सदस्यताएँ होती हैं। प्रत्येक प्रविष्टि में ग्रुप का id और name शामिल होता है:

groups claim in ID token
{
  "sub": "user-123",
  "email": "[email protected]",
  "groups": [
    { "id": "grp-001", "name": "Engineering" },
    { "id": "grp-002", "name": "Beta Testers" }
  ]
}

प्रति क्लाइंट सक्षम करें

includeGroupsInTokens सेटिंग प्रत्येक क्लाइंट पर व्यक्तिगत रूप से कॉन्फ़िगर की जाती है। इसे सक्षम करने के लिए क्लाइंट की General Settings पर जाएँ।

भूमिकाएँ (Roles)

भूमिकाएँ (Roles) आपके एप्लिकेशन में role-based access control (RBAC) का समर्थन करती हैं। Authagonal में भूमिकाएँ परिभाषित करें, उन्हें उपयोगकर्ताओं को असाइन करें, और अपने एप्लिकेशन लॉजिक में authorization लागू करने के लिए tokens में roles claim का उपयोग करें।

भूमिकाओं का प्रबंधन

Roles पेज inline editing के साथ सभी परिभाषित भूमिकाओं की एक तालिका दिखाता है। प्रत्येक भूमिका में होता है:

कॉलमविवरण
नामभूमिका के लिए एक अद्वितीय पहचानकर्ता (उदा. "admin", "editor", "viewer")
विवरणभूमिका क्या प्रदान करती है, इसका एक मानव-पठनीय विवरण
बनाया गयावह तारीख जब भूमिका बनाई गई थी

एक भूमिका बनाना

Create Role पर क्लिक करें और एक नाम और विवरण प्रदान करें। भूमिका नाम संक्षिप्त होने चाहिए और आपके एप्लिकेशन भर में एक सुसंगत naming convention का पालन करना चाहिए (उदा. हाइफ़न के साथ lowercase: billing-admin)।

Inline Editing

भूमिकाएँ सीधे तालिका में inline editing का समर्थन करती हैं। edit मोड में प्रवेश करने के लिए किसी भी भूमिका पर pencil आइकन पर क्लिक करें — नाम और विवरण फ़ील्ड संपादन योग्य हो जाते हैं। मानों को संशोधित करें, फिर सहेजने के लिए checkmark आइकन पर क्लिक करें। परिवर्तन तुरंत प्रभावी हो जाते हैं।

एक भूमिका हटाना

किसी भी भूमिका को हटाने के लिए उस पर delete आइकन पर क्लिक करें। भूमिका को स्थायी रूप से हटाए जाने से पहले आपसे पुष्टि करने के लिए कहा जाएगा। किसी भूमिका को हटाने से मौजूदा tokens पूर्वव्यापी रूप से अमान्य नहीं होते — हटाने के बाद जारी किए गए नए tokens में भूमिका अनुपस्थित होगी।

Roles table with inline editing active, showing editable name and description fields with save and cancel icons

roles तालिका में भूमिकाओं की inline editing

Tokens में भूमिकाएँ

किसी उपयोगकर्ता को असाइन की गई भूमिकाएँ ID token में एक roles claim के रूप में शामिल होती हैं। आपका एप्लिकेशन authorization निर्णय लेने के लिए इस claim को पढ़ सकता है:

roles claim in ID token
{
  "sub": "user-123",
  "email": "[email protected]",
  "roles": ["admin", "billing-admin"]
}

SCIM प्रोविज़निंग

SCIM 2.0 (System for Cross-domain Identity Management) Okta, Azure AD, OneLogin और JumpCloud जैसे एंटरप्राइज़ आइडेंटिटी प्रोवाइडर से स्वचालित उपयोगकर्ता और समूह प्रोविज़निंग सक्षम करता है। कॉन्फ़िगर होने पर, उपयोगकर्ता खाते और समूह सदस्यताएँ अपस्ट्रीम IdP से आपके Authagonal टेनेंट में स्वचालित रूप से सिंक हो जाती हैं।

SCIM provisioning flow — shows user lifecycle events flowing from enterprise IdP through Authagonal SCIM API to your app via TCC webhooks

डाउनस्ट्रीम प्रोविज़निंग के साथ SCIM उपयोगकर्ता लाइफसाइकल सिंक

सेटअप चरण

किसी क्लाइंट के लिए SCIM प्रोविज़निंग सक्षम करने हेतु इन चरणों का पालन करें:

  1. क्लाइंट एप्लिकेशन चुनें — वह OAuth क्लाइंट चुनें जिसके साथ SCIM प्रोविज़निंग संबद्ध होगी।
  2. SCIM टोकन जनरेट करें — एक विवरण और दिनों में समाप्ति अवधि दें, फिर टोकन जनरेट करें।
  3. टोकन तुरंत कॉपी करें — रॉ टोकन मान केवल एक बार दिखाया जाता है। डायलॉग बंद करने से पहले इसे कॉपी कर लें।
  4. अपना IdP कॉन्फ़िगर करें — अपने आइडेंटिटी प्रोवाइडर की SCIM सेटिंग्स में base URL और bearer टोकन दर्ज करें।
  5. उपयोगकर्ता सिंक का परीक्षण करें — अपने IdP से एक परीक्षण सिंक ट्रिगर करें और सत्यापित करें कि उपयोगकर्ता Authagonal पोर्टल में दिखाई देते हैं।

SCIM Base URL

अपने आइडेंटिटी प्रोवाइडर को निम्नलिखित base URL के साथ कॉन्फ़िगर करें:

SCIM Base URL
https://{slug}.authagonal.io/scim/v2

{slug} को अपने टेनेंट slug से बदलें।

SCIM configuration page showing client selector, token generation form, and base URL

टोकन जनरेशन के साथ SCIM सेटअप पेज

टोकन प्रबंधन

SCIM टोकन आपके IdP से प्रोविज़निंग अनुरोधों को प्रमाणित करते हैं। आप प्रति क्लाइंट कई टोकन प्रबंधित कर सकते हैं:

फ़ील्डविवरण
विवरणटोकन की पहचान के लिए एक लेबल (उदा. "Okta Production SCIM")
समाप्तिदिनों में टोकन की अवधि (1 से 3650)। उन टोकनों के लिए जिन्हें बार-बार रोटेट नहीं करना है, इसे खाली छोड़ें या एक लंबा मान सेट करें।
स्थितिसक्रिय टोकन उपयोग में हैं। रद्द किए गए टोकन एक Revoked बैज दिखाते हैं और अब अनुरोध प्रमाणित नहीं कर सकते।

किसी टोकन को रद्द करने के लिए, उसके बगल में मौजूद Revoke बटन पर क्लिक करें। रद्द किए गए टोकन ऑडिट उद्देश्यों के लिए सूची में दिखते रहते हैं लेकिन तुरंत अनुरोध स्वीकार करना बंद कर देते हैं।

SCIM token list showing active and revoked tokens with description, expiry date, and revoke button

सक्रिय और रद्द किए गए टोकन संकेतकों के साथ टोकन प्रबंधन

टोकन तुरंत कॉपी करें

रॉ SCIM टोकन बनाए जाने पर केवल एक बार दिखाया जाता है। इसे तुरंत कॉपी कर लें — इसे बाद में पुनः प्राप्त नहीं किया जा सकता। यदि आप टोकन खो देते हैं, तो आपको एक नया जनरेट करना होगा और अपना IdP कॉन्फ़िगरेशन अपडेट करना होगा।

कनेक्टिविटी का परीक्षण

ServiceProviderConfig एंडपॉइंट को क्वेरी करके सत्यापित करें कि आपका SCIM इंटीग्रेशन काम कर रहा है:

Test SCIM connectivity
curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://acme.authagonal.io/scim/v2/ServiceProviderConfig

एक सफल प्रतिक्रिया एक JSON दस्तावेज़ लौटाती है जो समर्थित SCIM सुविधाओं का वर्णन करती है, जिसमें बल्क ऑपरेशन, फ़िल्टरिंग और पासवर्ड बदलने की क्षमता शामिल है।

पसंदीदा भाषा

SCIM preferredLanguage एट्रिब्यूट (जो locale पर फ़ॉलबैक करता है) उपयोगकर्ता की संग्रहीत भाषा से मैप होता है। SCIM के माध्यम से प्रोविज़न किए गए SSO उपयोगकर्ता स्वचालित रूप से उनके IdP द्वारा भेजी गई भाषा में स्थानीयकृत ईमेल प्राप्त करते हैं।

OAuth स्कोप

स्कोप क्लाइंट्स को उपयोगकर्ता के डेटा या अनुमतियों के विशिष्ट हिस्से का अनुरोध करने देते हैं। Authagonal मानक OIDC स्कोप और आपके APIs के लिए आपके द्वारा परिभाषित कस्टम स्कोप दोनों का समर्थन करता है।

अंतर्निहित स्कोप

स्कोपविवरण
openidकिसी भी OpenID Connect प्रवाह के लिए आवश्यक। एक ID token जारी करता है।
profileमानक प्रोफ़ाइल claims लौटाता है (name, given_name, family_name)।
emailउपयोगकर्ता का ईमेल पता और सत्यापन स्थिति लौटाता है।
offline_accessaccess token के साथ एक refresh token जारी करता है।

कस्टम स्कोप

Scopes पेज पर अपने स्वयं के स्कोप परिभाषित करें। प्रत्येक स्कोप एक अनुमति या संसाधन का वर्णन करता है जिसका एक क्लाइंट अनुरोध कर सकता है (उदाहरण के लिए, billing.read, orders.write)।

Custom scope creation form with name, display name, description and User Claims fields
फ़ील्डविवरण
nametoken अनुरोधों में भेजा गया स्कोप पहचानकर्ता (उदा. billing.read)।
displayNameconsent स्क्रीन पर दिखाया गया मानव-पठनीय लेबल।
descriptionconsent पर display name के नीचे दिखाया गया लंबा स्पष्टीकरण।
userClaimsइस स्कोप के ग्रांट होने पर access token में जोड़े गए अतिरिक्त claims।
showInDiscoveryDocumentयदि चालू है, तो स्कोप /.well-known/openid-configuration में दिखाई देता है।
emphasizeconsent स्क्रीन पर स्कोप को संवेदनशील के रूप में हाइलाइट करता है।
requiredउपयोगकर्ता को consent के दौरान स्कोप को अचयनित करने से रोकता है।

Consent एकीकरण

RequireConsent: true वाले क्लाइंट पहले अनुरोध पर उपयोगकर्ता को संकेत देते हैं। किसी स्कोप को हटाने से पहले से जारी किए गए tokens रद्द नहीं होते — यदि आवश्यक हो तो उन्हें स्पष्ट रूप से रद्द करें।

tokens पर कस्टम claims

कस्टम claims के दो हिस्से होते हैं। source प्रति-उपयोगकर्ता डेटा है: प्रत्येक AuthUser में एक customAttributes dictionary होती है जिसे आप पोर्टल से (Users → user → Custom Attributes), SCIM के माध्यम से, या एक TCC provisioning hook के माध्यम से पॉपुलेट कर सकते हैं। release प्रति-स्कोप है: प्रत्येक स्कोप की userClaims सूची उन keys को नाम देती है जिन्हें वह server छोड़ने की अनुमति देता है।

जब एक क्लाइंट स्कोप का अनुरोध करता है, तो Authagonal ग्रांट किए गए स्कोप के माध्यम से चलता है, उनकी userClaims सूचियों का union करता है, और उपयोगकर्ता के customAttributes से केवल उन्हीं keys को emit करता है। अज्ञात keys चुपचाप गिरा दी जाती हैं — एक क्लाइंट नाम का अनुमान लगाकर किसी attribute को नहीं पढ़ सकता। मानक OIDC claims (sub, email, name, आदि) spec का पालन करते हैं और whitelist के अधीन नहीं हैं।

Example: project-scope claims on an access token
# 1. On the user (Portal → Users → {user} → Custom Attributes)
department = "engineering"
employee_id = "E-1042"
seat_tier = "enterprise"

# 2. On a custom scope (Portal → Scopes → projects.read)
name        = "projects.read"
userClaims  = ["department", "seat_tier"]   # <-- whitelist

# 3. Client requests scope=openid projects.read
# Decoded access token (relevant fields only):
{
  "sub": "u-9b…",
  "scope": "openid projects.read",
  "department": "engineering",
  "seat_tier":  "enterprise"
  // employee_id is NOT emitted — it's not in the whitelist for any granted scope.
}

Federation claims प्रति-session override करते हैं

जब एक उपयोगकर्ता upstream IdP (SAML/OIDC SSO) के माध्यम से साइन इन करता है, तो IdP से आने वाले प्रति-session claims — उदाहरण के लिए एक SAML assertion से मैप किया गया department attribute — उसी स्कोप whitelist से गुजरते हैं लेकिन key टकराव पर persisted customAttributes के मुकाबले जीतते हैं। उन्हें इस session के tokens पर emit किया जाता है (और refresh rotations के बाद भी बने रहते हैं) बिना उपयोगकर्ता रिकॉर्ड में वापस लिखे जाने के।

क्लाइंट्स को स्कोप असाइन करना

Clients → Scopes & Grants टैब पर अनुमत स्कोप जोड़ें। एक क्लाइंट केवल उन्हीं स्कोप का अनुरोध कर सकता है जो उसे ग्रांट किए गए हैं; अज्ञात स्कोप invalid_scope के साथ अस्वीकार कर दिए जाते हैं।

ब्रांडिंग

अपने टेनेंट के लॉगिन पेजों का रूप-रंग कस्टमाइज़ करें। ब्रांडिंग सेटिंग्स आपको प्रमाणीकरण अनुभव को अपने उत्पाद की दृश्य पहचान से मिलाने देती हैं — लोगो और रंगों से लेकर उन्नत CSS ओवरराइड तक।

रूप-रंग

सेटिंगविवरण
appNameलॉगिन पेज हेडर और ब्राउज़र टैब पर प्रदर्शित एप्लिकेशन नाम
logoUrlआपकी लोगो छवि का URL। लॉगिन पेज के शीर्ष पर प्रदर्शित होता है। अनुशंसित आकार: 200x60px या समान आस्पेक्ट रेशियो।
primaryColorबटन, लिंक और फ़ोकस अवस्थाओं के लिए उपयोग किया जाने वाला प्राथमिक ब्रांड रंग। कलर पिकर या हेक्स इनपुट के माध्यम से सेट करें। मान बदलते ही एक लाइव पूर्वावलोकन अपडेट होता है।
customCssUrlडिफ़ॉल्ट स्टाइल के बाद लोड होने वाली बाहरी CSS फ़ाइल का URL। इसका उपयोग उन्नत स्टाइलिंग ओवरराइड के लिए करें।
Branding appearance settings with app name input, logo URL field, color picker with hex input, and custom CSS URL field

लाइव रंग पूर्वावलोकन के साथ रूप-रंग सेटिंग्स

संपर्क जानकारी

सेटिंगविवरण
supportEmailलॉगिन पेजों पर प्रदर्शित एक सपोर्ट ईमेल पता। उपयोगकर्ता इसे तब देखते हैं जब उन्हें अपने खाते में सहायता चाहिए होती है।

लॉगिन पेज टॉगल

नियंत्रित करें कि आपके टेनेंट के लॉगिन पेज पर कौन से तत्व दिखाई दें:

टॉगलविवरणडिफ़ॉल्ट
showForgotPasswordलॉगिन फ़ॉर्म पर "पासवर्ड भूल गए?" लिंक प्रदर्शित करेंचालू
showRegistrationस्व-सेवा उपयोगकर्ता पंजीकरण के लिए "साइन अप" लिंक प्रदर्शित करेंचालू
showPoweredByलॉगिन पेज के नीचे "Powered by Authagonal" बैज प्रदर्शित करेंचालू
A customized login page showing a branded logo, custom primary color on the sign-in button, and support email in the footer

कस्टम ब्रांडिंग लागू किए गए उदाहरण लॉगिन पेज

कस्टम CSS

लॉगिन पेज के रूप-रंग पर पूर्ण नियंत्रण के लिए, अपनी ब्रांडिंग सेटिंग्स में एक CSS फ़ाइल URL दें। फ़ाइल डिफ़ॉल्ट स्टाइल के बाद लोड होती है, इसलिए आपके नियमों को प्राथमिकता मिलती है।

CSS कस्टम प्रॉपर्टीज़

लॉगिन पेज सामान्य ओवरराइड के लिए CSS कस्टम प्रॉपर्टीज़ (वेरिएबल) का समर्थन करता है। जटिल सेलेक्टर लिखे बिना रंग, फ़ॉन्ट और आकार बदलने के लिए इन्हें अपनी CSS फ़ाइल में सेट करें।
/* your-custom-styles.css */
:root {
--auth-bg: #1a1a2e;
--auth-card-bg: #16213e;
--auth-heading: #e0e0e0;
--auth-radius: 12px;
--auth-font: 'Inter', sans-serif;
}
वेरिएबलविवरणडिफ़ॉल्ट
--auth-bgपेज पृष्ठभूमि रंग#f3f4f6
--auth-card-bgलॉगिन कार्ड पृष्ठभूमिwhite
--auth-headingशीर्षक टेक्स्ट रंग#111827
--auth-radiusकार्ड बॉर्डर रेडियस0.5rem
--auth-fontफ़ॉन्ट फ़ैमिलीinherit

डार्क मोड

लॉगिन ऐप लाइट, डार्क और सिस्टम थीम के साथ आता है। उपयोगकर्ता लॉगिन पेज पर एक टॉगल से चुनते हैं; यह विकल्प सेशनों के बीच बना रहता है। system पर सेट होने पर, SPA prefers-color-scheme को लाइव ट्रैक करता है।

लाइट मान :root पर घोषित होते हैं; डार्क ओवरराइड .dark तक सीमित होते हैं। customCssUrl के माध्यम से सेट की गई टेनेंट ब्रांडिंग हमेशा जीतती है — इसलिए आपके रंग उपयोगकर्ता की थीम की परवाह किए बिना बने रहते हैं।

एलिमेंट सेलेक्टर

अधिक सूक्ष्म नियंत्रण के लिए, data-auth एट्रिब्यूट का उपयोग करके विशिष्ट तत्वों को लक्षित करें। ये सेलेक्टर अपडेट के दौरान स्थिर रहते हैं — जब हम आंतरिक क्लास नाम बदलते हैं तो ये नहीं टूटेंगे।
सेलेक्टरएलिमेंट
[data-auth="page"]पूर्ण-पेज पृष्ठभूमि कंटेनर
[data-auth="header"]लोगो और ऐप नाम क्षेत्र
[data-auth="logo"]लोगो छवि
[data-auth="app-name"]ऐप नाम शीर्षक (जब कोई लोगो सेट न हो)
[data-auth="content"]मुख्य सामग्री क्षेत्र (फ़ॉर्म, संदेश)
[data-auth="login-form"]लॉगिन फ़ॉर्म एलिमेंट
[data-auth="email-field"]ईमेल इनपुट रैपर
[data-auth="password-field"]पासवर्ड इनपुट रैपर
[data-auth="submit-button"]साइन-इन बटन
[data-auth="languages"]भाषा चयनकर्ता बार

सेटिंग्स

टेनेंट-व्यापी सुरक्षा नीतियाँ, वेबहुक और एनवायरनमेंट सेटिंग्स कॉन्फ़िगर करें। ये सेटिंग्स सभी क्लाइंट पर वैश्विक रूप से लागू होती हैं, जब तक कि क्लाइंट स्तर पर ओवरराइड न की जाएँ।

पासवर्ड नीति

अपने टेनेंट के सभी उपयोगकर्ताओं के लिए पासवर्ड जटिलता आवश्यकताएँ परिभाषित करें:

सेटिंगरेंजडिफ़ॉल्ट
minPasswordLength6 – 1288
requireUppercaseचालू / बंदचालू
requireLowercaseचालू / बंदचालू
requireDigitचालू / बंदचालू
requireSpecialCharचालू / बंदचालू
Password policy settings showing minimum length slider and toggle switches for character requirements

पासवर्ड नीति कॉन्फ़िगरेशन

MFA नीति

टेनेंट-व्यापी MFA नीति डिफ़ॉल्ट मल्टी-फैक्टर प्रमाणीकरण व्यवहार सेट करती है। अलग-अलग क्लाइंट इस सेटिंग को ओवरराइड कर सकते हैं।

नीतिव्यवहार
DisabledMFA उपलब्ध नहीं है। उपयोगकर्ता MFA में नामांकन नहीं कर सकते।
EnabledMFA वैकल्पिक है। उपयोगकर्ता नामांकन करना चुन सकते हैं और नामांकित होने पर लॉगिन के समय संकेत दिया जाएगा।
RequiredMFA अनिवार्य है। सभी उपयोगकर्ताओं को MFA में नामांकन करना होगा और प्रत्येक लॉगिन पर एक दूसरा फैक्टर पूरा करना होगा।

सेशन और लॉकआउट

सेशन अवधि और खाता लॉकआउट व्यवहार को नियंत्रित करें:

सेटिंगरेंजडिफ़ॉल्ट
sessionLifetimeMinutes5 – 43,200 (30 दिन)60
maxFailedAttempts1 – 1005
lockoutDurationMinutes1 – 1,440 (24 घंटे)10
Session and lockout settings with numeric inputs for session lifetime, max failed attempts, and lockout duration

सेशन और लॉकआउट कॉन्फ़िगरेशन

वेबहुक

वेबहुक आपको प्रमाणीकरण इवेंट पर रियल टाइम में प्रतिक्रिया देने देते हैं। दो इवेंट (onUserAuthenticated, onTokenIssued) प्रवर्तनीय हैं — डिफ़ॉल्ट रूप से वे एसिंक्रोनस रूप से फ़ायर होते हैं और उपयोगकर्ता को ब्लॉक नहीं करते, लेकिन आप प्रति इवेंट प्रवर्तन का विकल्प चुन सकते हैं ताकि एक non-2xx प्रतिक्रिया या {"allow": false} बॉडी कार्रवाई को अस्वीकार कर दे। शेष इवेंट सूचनाएँ हैं — हमेशा fire-and-forget, कभी ब्लॉक नहीं करतीं।

इवेंटप्रकारविवरण
onUserAuthenticatedप्रवर्तनीयसफल लॉगिन के बाद फ़ायर होता है। डिफ़ॉल्ट रूप से fire-and-forget होता है ताकि लॉगिन लेटेंसी प्रभावित न हो। इसे ब्लॉकिंग बनाने के लिए <code>webhookEnforceUserAuthenticated</code> टॉगल करें — फिर एक non-2xx प्रतिक्रिया या <code>{"allow": false}</code> बॉडी लॉगिन को अस्वीकार कर देती है।
onTokenIssuedप्रवर्तनीयटोकन मिंट होने से पहले फ़ायर होता है (authorization_code, refresh_token, client_credentials)। डिफ़ॉल्ट रूप से fire-and-forget। इसे ब्लॉकिंग बनाने के लिए <code>webhookEnforceTokenIssued</code> टॉगल करें — फिर एक non-2xx प्रतिक्रिया या <code>{"allow": false}</code> बॉडी टोकन जारी करने से रोक देती है।
onUserCreatedसूचनाजब कोई नया उपयोगकर्ता पंजीकरण करता है या SCIM के माध्यम से प्रोविज़न किया जाता है तो fire-and-forget सूचना।
onUserUpdatedसूचनाजब कोई उपयोगकर्ता रिकॉर्ड अपडेट होता है (प्रोफ़ाइल परिवर्तन, भूमिका परिवर्तन, SCIM अपडेट) तो fire-and-forget सूचना।
onUserDeletedसूचनाजब किसी उपयोगकर्ता को हटाया जाता है, चाहे पोर्टल/SCIM के माध्यम से या रिटेंशन नीति द्वारा, तो fire-and-forget सूचना।
onLoginFailedसूचनाजब गलत क्रेडेंशियल, लॉकआउट या नीति अस्वीकृति के कारण लॉगिन प्रयास विफल होता है तो fire-and-forget सूचना।

अतिरिक्त वेबहुक सेटिंग्स:

सेटिंगरेंजडिफ़ॉल्टविवरण
webhookTimeoutSeconds1 – 305टाइम आउट होने से पहले प्रवर्तन वेबहुक प्रतिक्रिया की प्रतीक्षा करने का अधिकतम समय
webhookFailOpenचालू / बंदचालूसक्षम होने पर, यदि कोई प्रवर्तन वेबहुक पहुँच से बाहर है या टाइम आउट हो जाता है, तो ऑपरेशन को आगे बढ़ने की अनुमति दी जाती है
Webhook configuration section showing URL inputs for each event type, timeout slider, and fail-open toggle

वेबहुक इवेंट कॉन्फ़िगरेशन

प्रवर्तन वेबहुक उपलब्धता

प्रवर्तन वेबहुक प्रमाणीकरण प्रवाह को ब्लॉक कर सकते हैं। यदि आपका वेबहुक एंडपॉइंट डाउन हो जाता है और webhookFailOpen अक्षम है, तो कोई भी उपयोगकर्ता लॉग इन नहीं कर पाएगा। fail-open मोड का उपयोग करें, जब तक कि आपके पास सख्त अनुपालन आवश्यकताएँ न हों जो वेबहुक विफलता पर ब्लॉक करना अनिवार्य करती हों।

वेबहुक का सत्यापन

एक बार कोई वेबहुक URL कॉन्फ़िगर हो जाने पर, Authagonal एक प्रति-टेनेंट साइनिंग सीक्रेट मिंट करता है (एक whsec_… मान जो Settings → Webhooks के अंतर्गत केवल-पढ़ने के लिए दिखाया जाता है)। प्रत्येक आउटबाउंड डिलीवरी एक X-Authagonal-Signature: t=<unix>,v1=<hex> हेडर ले जाती है, जहाँ v1 रॉ रिक्वेस्ट बॉडी पर परिकलित HMAC-SHA256(secret, "{t}.{body}") है। इसे अपने एंडपॉइंट पर पुनः परिकलित करें और constant-time तुलना करें ताकि पुष्टि हो सके कि अनुरोध वास्तव में Authagonal से आया था और इसके साथ छेड़छाड़ नहीं हुई थी — और उन डिलीवरी को अस्वीकार करें जिनका t रीप्ले रोकने के लिए बहुत पुराना है।

वेबहुक सत्यापित करें (Node.js)
import crypto from 'node:crypto';

// rawBody MUST be the exact bytes Authagonal sent — verify before any JSON re-serialization.
function verifyAuthagonalWebhook(signatureHeader, rawBody, signingSecret) {
  const parts = Object.fromEntries(signatureHeader.split(',').map((p) => p.split('=')));
  const { t, v1 } = parts;

  // Replay protection: reject deliveries older than 5 minutes.
  if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;

  const expected = crypto
    .createHmac('sha256', signingSecret)
    .update(`${t}.${rawBody}`)
    .digest('hex');

  return v1.length === expected.length &&
    crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
}

साइनिंग सीक्रेट को रोटेट करना

साइनिंग सीक्रेट को रोटेट करने के लिए उसके बगल में Regenerate का उपयोग करें — उदाहरण के लिए संदिग्ध लीक के बाद। पिछला सीक्रेट तुरंत अमान्य हो जाता है, इसलिए अपने वेरिफ़ायर को नए मान से अपडेट करें अन्यथा इन-फ्लाइट डिलीवरी अपनी सिग्नेचर जाँच में विफल होने लगेंगी।

मेंटेनेंस विंडो

प्रमाणपत्र रोटेशन और इन्फ्रास्ट्रक्चर अपडेट जैसे विघटनकारी ऑपरेशन के लिए एक पसंदीदा मेंटेनेंस विंडो सेट करें। एक UTC घंटा (0–23) चुनें — पोर्टल सुविधा के लिए आपके स्थानीय टाइमज़ोन में समतुल्य समय भी प्रदर्शित करता है।

सैंडबॉक्स एनवायरनमेंट

सैंडबॉक्स एनवायरनमेंट आपके प्रोडक्शन टेनेंट का पूर्ण क्लोन है, जो एक अलग URL पर उपलब्ध है। इसका उपयोग लाइव उपयोगकर्ताओं को प्रभावित किए बिना कॉन्फ़िगरेशन परिवर्तन, SSO इंटीग्रेशन और वेबहुक एंडपॉइंट का परीक्षण करने के लिए करें।

कार्रवाईविवरण
सैंडबॉक्स सक्षम करेंआपके प्रोडक्शन टेनेंट की एक सैंडबॉक्स कॉपी बनाता है। सैंडबॉक्स URL आपका टेनेंट slug है जिसमें -sandbox प्रत्यय होता है।
लाइव से रिफ़्रेश करेंसैंडबॉक्स एनवायरनमेंट को वर्तमान प्रोडक्शन कॉन्फ़िगरेशन और उपयोगकर्ता डेटा के साथ सिंक करता है।
सैंडबॉक्स अक्षम करेंसैंडबॉक्स एनवायरनमेंट और उसके सभी डेटा को स्थायी रूप से हटा देता है।

सैंडबॉक्स {slug}-sandbox.authagonal.io पर सुलभ है।

Sandbox settings showing enable/disable toggle, refresh from live button, and sandbox URL display

सैंडबॉक्स एनवायरनमेंट नियंत्रण

बिलिंग

पोर्टल के बिलिंग पेज के माध्यम से अपनी सब्सक्रिप्शन और बिलिंग प्रबंधित करें। यह पेज आपको आपके वर्तमान प्लान का अवलोकन देता है और भुगतान विधियों, इनवॉइस और प्लान परिवर्तनों को प्रबंधित करने के लिए Stripe बिलिंग पोर्टल तक पहुँच प्रदान करता है।

सब्सक्रिप्शन जानकारी

बिलिंग पेज आपकी वर्तमान सब्सक्रिप्शन का विवरण एक नज़र में प्रदर्शित करता है। आपको आपकी सब्सक्रिप्शन स्थिति दर्शाने वाला एक स्टेटस बैज दिखाई देगा — active, trialing, past_due, canceled, या unpaid — आपके प्लान नाम, वर्तमान बिलिंग अवधि (आरंभ और समाप्ति तिथियाँ), और क्या आपकी सब्सक्रिप्शन वर्तमान अवधि के अंत में रद्द होने के लिए सेट है, के साथ।

सब्सक्रिप्शन प्रबंधित करें

नई विंडो में Stripe बिलिंग पोर्टल खोलने के लिए Manage Subscription बटन पर क्लिक करें। वहाँ से आप अपनी भुगतान विधियाँ अपडेट कर सकते हैं, इनवॉइस देख और डाउनलोड कर सकते हैं, अपना प्लान बदल सकते हैं, या अपनी सब्सक्रिप्शन रद्द कर सकते हैं।

यदि अभी तक कोई सब्सक्रिप्शन मौजूद नहीं है, तो इसके बजाय एक Setup Billing कॉल-टू-एक्शन दिखाया जाता है, जो आपको प्लान चुनने और भुगतान विवरण दर्ज करने में मार्गदर्शन करता है।

Billing page showing subscription status, plan name, billing period, and Manage Subscription button

बिलिंग पेज आपकी वर्तमान सब्सक्रिप्शन का विवरण प्रदर्शित करता है और Stripe तक पहुँच प्रदान करता है

भुगतान सुरक्षा

सभी बिलिंग Stripe के माध्यम से संभाली जाती है। आपकी भुगतान जानकारी कभी भी Authagonal सर्वर पर संग्रहीत नहीं की जाती।

कस्टम डोमेन

डिफ़ॉल्ट {slug}.authagonal.io के बजाय अपने स्वयं के डोमेन (उदा. auth.yourdomain.com) से अपने प्रमाणीकरण पेज सर्व करें। कस्टम डोमेन आपके उपयोगकर्ताओं को एक सहज, ब्रांडेड प्रमाणीकरण अनुभव देते हैं।

डोमेन जोड़ना

ऐड डोमेन फ़ॉर्म में वह होस्टनेम दर्ज करें जिसका आप उपयोग करना चाहते हैं (उदा. auth.yourdomain.com)। जोड़े जाने के बाद, डोमेन आपकी डोमेन सूची में pending_verification स्थिति के साथ दिखाई देगा।

DNS सत्यापन

अपने डोमेन को {slug}.authagonal.io की ओर इंगित करने वाला एक CNAME रिकॉर्ड बनाएँ। DNS रिकॉर्ड लागू हो जाने के बाद, DNS प्रसार जाँचने के लिए Verify पर क्लिक करें।

CNAME record
auth.yourdomain.com.  CNAME  acme.authagonal.io.

DNS प्रसार

DNS प्रसार में 48 घंटे तक लग सकते हैं। यदि सत्यापन विफल होता है, तो प्रतीक्षा करें और पुनः प्रयास करें।

TLS प्रमाणपत्र

एक बार आपका डोमेन सत्यापित हो जाने पर, आपको एक TLS प्रमाणपत्र की आवश्यकता होती है ताकि उपयोगकर्ता HTTPS पर सुरक्षित रूप से कनेक्ट कर सकें। Authagonal दो विकल्पों का समर्थन करता है:

स्वचालित (cert-manager) — Authagonal cert-manager का उपयोग करके TLS प्रमाणपत्र स्वचालित रूप से प्रोविज़न और नवीनीकृत करता है। यह अधिकांश उपयोगकर्ताओं के लिए अनुशंसित विकल्प है। किसी अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है।

अपना खुद का लाएँ (BYO) — PEM फ़ॉर्मेट में अपना स्वयं का प्रमाणपत्र और निजी कुंजी अपलोड करें। यह विकल्प तब उपयोगी है जब आपके संगठन को किसी विशिष्ट सर्टिफ़िकेट अथॉरिटी से प्रमाणपत्र की आवश्यकता हो। प्रमाणपत्र समाप्ति को ट्रैक किया जाता है ताकि आप इसके समाप्त होने से पहले नवीनीकरण कर सकें।

डोमेन स्थिति

प्रत्येक डोमेन अपनी वर्तमान स्थिति दर्शाने वाला एक स्टेटस बैज प्रदर्शित करता है: pending_verification (DNS अभी तक पुष्ट नहीं), verified (DNS पुष्ट, TLS लंबित), active (पूर्णतः चालू), या failed (कॉन्फ़िगरेशन समस्या का पता चला)।

Domain list showing domains with status badges and verification controls

डोमेन सूची प्रत्येक कस्टम डोमेन और उसकी वर्तमान स्थिति प्रदर्शित करती है

BYO certificate upload form with certificate and private key PEM fields

PEM फ़ॉर्मेट में अपना स्वयं का TLS प्रमाणपत्र और निजी कुंजी अपलोड करें

BYO प्रमाणपत्र नवीनीकरण

अपने BYO प्रमाणपत्र को नवीनीकृत रखें। समाप्त हो चुके प्रमाणपत्र आपके उपयोगकर्ताओं के लिए ब्राउज़र सुरक्षा चेतावनियाँ उत्पन्न करेंगे।

ईमेल कॉन्फ़िगरेशन

कॉन्फ़िगर करें कि आपका टेनेंट ट्रांज़ैक्शनल ईमेल कैसे भेजता है — सत्यापन, पासवर्ड रीसेट, और MFA सूचनाएँ। डिफ़ॉल्ट साझा प्रेषक, Resend के माध्यम से सत्यापित कस्टम डोमेन, या अपने स्वयं के SMTP सर्वर में से चुनें।

Email settings showing provider options (default, Resend domain, custom SMTP) and a test-send

स्थानीयकृत ईमेल

ट्रांज़ैक्शनल ईमेल प्राप्तकर्ता की पसंदीदा भाषा में भेजे जाते हैं। सत्यापन, पासवर्ड-रीसेट, account-exists, स्वागत, बिलिंग, और admin-invite ईमेल सात लोकेल में टेम्पलेट किए गए हैं: अंग्रेज़ी, जर्मन, फ़्रेंच, स्पेनिश, पुर्तगाली, वियतनामी, और सरलीकृत चीनी। जब प्राप्तकर्ता की भाषा के लिए कोई टेम्पलेट मौजूद नहीं होता, तो ईमेल अंग्रेज़ी पर फ़ॉलबैक करता है।

भाषा भेजने के समय प्राप्तकर्ता की संग्रहीत प्राथमिकता से तय की जाती है। वह प्राथमिकता कई स्थानों से आ सकती है:

  • साइन-अप और पंजीकरण — होस्टेड साइन-इन स्क्रीन पर उपयोगकर्ता द्वारा चुनी गई भाषा से कैप्चर किया गया।
  • पोर्टल Users पेज — उपयोगकर्ता बनाते या संपादित करते समय एडमिन द्वारा सेट किया गया।
  • SCIM प्रोविज़निंग — जब उपयोगकर्ता SSO के माध्यम से सिंक किए जाते हैं तो IdP के preferredLanguage से मैप किया गया।
  • स्व-सेवा खाता पेज — उपयोगकर्ता द्वारा स्वयं /login/account पर चुना गया।

किसी कॉन्फ़िगरेशन की आवश्यकता नहीं

स्थानीयकरण स्वचालित है और प्रत्येक प्रोवाइडर मोड (डिफ़ॉल्ट, Resend कस्टम डोमेन, और SMTP) पर लागू होता है। सक्षम करने के लिए कुछ नहीं है।

ईमेल प्रोवाइडर

प्रोवाइडरविवरणसेटअप
Defaultहमारे साझा Resend इन्फ्रास्ट्रक्चर का उपयोग करके [email protected] से भेजे गए ईमेल।किसी कॉन्फ़िगरेशन की आवश्यकता नहीं — सीधे काम करता है।
Resend Custom DomainResend के माध्यम से आपके स्वयं के सत्यापित डोमेन से भेजे गए ईमेल।अपना डोमेन पंजीकृत करें, DNS रिकॉर्ड जोड़ें, स्वामित्व सत्यापित करें।
Custom SMTPआपके स्वयं के SMTP सर्वर के माध्यम से भेजे गए ईमेल।SMTP होस्ट, पोर्ट, क्रेडेंशियल और TLS सेटिंग्स दें।

प्रेषक पहचान

प्रेषक ईमेल और नाम सभी प्रोवाइडर मोड में साझा होते हैं। प्रेषक ईमेल आवश्यक है; खाली होने पर प्रेषक नाम टेनेंट नाम पर फ़ॉलबैक करता है।

फ़ील्डविवरण
senderEmailआउटबाउंड ईमेल पर From पता। Resend Custom Domain मोड के लिए एक सत्यापित डोमेन पर होना चाहिए।
senderNameप्राप्तकर्ता के इनबॉक्स में दिखाया जाने वाला प्रदर्शन नाम।

Resend Custom Domain

अपने सेंडिंग डोमेन को Resend के साथ एक बार सत्यापित करें, फिर इसे इस टेनेंट के लिए From पते के रूप में उपयोग करें। DNS TXT रिकॉर्ड (SPF, DKIM) Domains पेज द्वारा प्रदान किए जाते हैं; Resend उन्हें स्वचालित रूप से मान्य करता है।

कस्टम SMTP

अपना स्वयं का SMTP सर्वर लाएँ — आंतरिक रिले, Resend द्वारा कवर न किए गए विक्रेताओं, या नियामक पिनिंग के लिए उपयोगी।

फ़ील्डविवरण
hostSMTP सर्वर होस्टनेम (उदा. smtp.example.com)।
portकनेक्शन पोर्ट। STARTTLS के लिए 587, implicit TLS के लिए 465, अप्रमाणित आंतरिक रिले के लिए 25।
usernameAuth उपयोगकर्ता नाम (वैकल्पिक — अप्रमाणित रिले के लिए खाली छोड़ें)।
passwordAuth पासवर्ड। टेनेंट सेटिंग्स सीक्रेट में एन्क्रिप्टेड संग्रहीत।
useTlsTLS आवश्यक करें। चालू रहने दें, जब तक कि आप किसी विश्वसनीय आंतरिक रिले को लक्षित न कर रहे हों।

कस्टम सेंडिंग डोमेन

Resend प्रोवाइडर का उपयोग करते समय, आप अपना स्वयं का डोमेन पंजीकृत कर सकते हैं ताकि ईमेल @authagonal.io के बजाय आपके ब्रांड से आएँ (उदा. [email protected])।

  1. Settings → Email पर जाएँ और Resend Custom Domain प्रोवाइडर चुनें।
  2. अपना डोमेन नाम दर्ज करें और Register पर क्लिक करें।
  3. दिखाए गए DNS रिकॉर्ड (DKIM, SPF, और return path) को अपने डोमेन के DNS में जोड़ें।
  4. Check Verification पर क्लिक करें — एक बार DNS प्रसारित हो जाने पर (आमतौर पर 1–10 मिनट), डोमेन स्थिति verified में बदल जाएगी।

DNS प्रसार

DNS परिवर्तन वैश्विक रूप से प्रसारित होने में 48 घंटे तक लग सकते हैं, हालाँकि अधिकांश प्रोवाइडर कुछ मिनटों में अपडेट हो जाते हैं। आप जितनी बार आवश्यक हो सत्यापन जाँच सकते हैं।

परीक्षण

अपना कॉन्फ़िगरेशन सत्यापित करने के लिए Settings → Email में Send Test Email बटन का उपयोग करें। वर्तमान में सहेजी गई सेटिंग्स का उपयोग करके आपके एडमिन ईमेल पते पर एक परीक्षण ईमेल भेजा जाएगा।

ऑडिट लॉग

ऑडिट लॉग आपके टेनेंट पर की गई सभी प्रशासनिक कार्रवाइयों का केवल-पढ़ने योग्य रिकॉर्ड प्रदान करता है। पोर्टल या API के माध्यम से किया गया प्रत्येक परिवर्तन पूर्ण संदर्भ के साथ कैप्चर किया जाता है, जो आपको अनुपालन और समस्या निवारण के लिए एक पूर्ण ट्रेल देता है।

लॉग कॉलम

कॉलमविवरण
टाइमस्टैम्पवह तिथि और समय जब कार्रवाई हुई
एक्टरउस एडमिन का ईमेल पता जिसने कार्रवाई की, या स्वचालित कार्रवाइयों के लिए "system"
कार्रवाईकी गई कार्रवाई का प्रकार (उदा. Client Created, Settings Updated)
एंटिटीtype:id फ़ॉर्मेट में कार्रवाई का लक्ष्य (उदा. client:my-app)
विवरणपरिवर्तन के बारे में अतिरिक्त संदर्भ

ट्रैक की गई कार्रवाइयाँ

निम्नलिखित प्रशासनिक कार्रवाइयाँ ऑडिट लॉग में दर्ज की जाती हैं:

श्रेणीकार्रवाइयाँ
क्लाइंटक्लाइंट बनाया गया, क्लाइंट अपडेट किया गया, क्लाइंट हटाया गया
SSO कनेक्शनSAML कनेक्शन बनाया गया, SAML कनेक्शन हटाया गया, OIDC कनेक्शन बनाया गया, OIDC कनेक्शन हटाया गया
उपयोगकर्ताउपयोगकर्ता बनाया गया, उपयोगकर्ता अपडेट किया गया
सेटिंग्ससेटिंग्स अपडेट की गईं, ब्रांडिंग अपडेट की गई
डोमेनडोमेन जोड़ा गया, डोमेन सत्यापित किया गया, डोमेन हटाया गया
SCIMSCIM टोकन बनाया गया, SCIM टोकन रद्द किया गया
भूमिकाएँभूमिका बनाई गई, भूमिका अपडेट की गई, भूमिका हटाई गई
समूहग्रुप बनाया गया, ग्रुप हटाया गया
टीमटीम सदस्य आमंत्रित किया गया, टीम सदस्य हटाया गया
Audit log table showing timestamped administrative actions with actor, action, entity, and detail columns

ऑडिट लॉग सभी प्रशासनिक कार्रवाइयों का पूर्ण रिकॉर्ड प्रदान करता है

रिटेंशन

ऑडिट लॉग आपके टेनेंट के पूरे जीवनकाल तक रखे जाते हैं और इन्हें संशोधित या हटाया नहीं जा सकता।

बैकअप

Authagonal स्वचालित रूप से आपके टेनेंट डेटा का प्रति घंटा शेड्यूल पर बैकअप लेता है। बैकअप में सभी उपयोगकर्ता, समूह, भूमिकाएँ, क्लाइंट, SSO कनेक्शन, SCIM टोकन, ब्रांडिंग, और सेटिंग्स शामिल होते हैं। आप बैकअप इतिहास देख सकते हैं और Backups पेज से नवीनतम पूर्ण बैकअप डाउनलोड कर सकते हैं।

Backups page showing backup history with timestamps, types, and entity counts

बैकअप कैसे काम करते हैं

  • एक पूर्ण बैकअप दिन में एक बार चलता है, जो आपके टेनेंट के स्टोरेज शार्ड की हर टेबल को कैप्चर करता है।
  • इंक्रीमेंटल बैकअप प्रति घंटा चलते हैं, जो केवल पिछले बैकअप के बाद से बदली गई पंक्तियों को कैप्चर करते हैं।
  • बैकअप आपके टेनेंट द्वारा उपयोग की जाने वाली समान मैनेज्ड आइडेंटिटी के साथ Azure Blob Storage में संग्रहीत होते हैं।
  • हटाए गए रिकॉर्ड tombstones के माध्यम से ट्रैक किए जाते हैं और ऑडिट पूर्णता के लिए बैकअप में शामिल किए जाते हैं।

बैकअप डाउनलोड करना

सबसे हाल के पूर्ण बैकअप को सभी बाद के इंक्रीमेंटल बैकअप के साथ मर्ज करके एक ZIP फ़ाइल प्राप्त करने के लिए Download Latest पर क्लिक करें। प्रत्येक टेबल को एक JSONL फ़ाइल के रूप में निर्यात किया जाता है (प्रति पंक्ति एक JSON ऑब्जेक्ट)।

बैकअप फ़ॉर्मेट

बैकअप JSONL (JSON Lines) के रूप में निर्यात किए जाते हैं — प्रति टेबल प्रति पंक्ति एक एंटिटी। इस फ़ॉर्मेट को पार्स करना, डिफ़ करना, और अन्य सिस्टम में इम्पोर्ट करना आसान है।

प्रोविज़निंग ऐप्स

जब आपके टेनेंट में उपयोगकर्ता बनाए या प्रमाणित किए जाते हैं तो प्रोविज़निंग ऐप्स रियल-टाइम वेबहुक सूचनाएँ प्राप्त करते हैं। यह डाउनस्ट्रीम सिस्टम को मैन्युअल हस्तक्षेप के बिना स्वचालित रूप से खाते सेट अप करने, लाइसेंस असाइन करने या उपयोगकर्ता डेटा सिंक करने में सक्षम बनाता है।

यह कैसे काम करता है

जब कोई उपयोगकर्ता इवेंट होता है (निर्माण या प्रमाणीकरण), तो Authagonal TCC (Try/Confirm/Cancel) पैटर्न का उपयोग करके आपके प्रोविज़निंग ऐप के कॉलबैक URL को कॉल करता है। यह तीन-चरण दृष्टिकोण कई डाउनस्ट्रीम सिस्टम में विश्वसनीय प्रोविज़निंग सुनिश्चित करता है:

फेज़एंडपॉइंटउद्देश्य
/tryPOST {callbackUrl}/tryजाँचता है कि क्या ऐप उपयोगकर्ता को संभाल सकता है। स्वीकार करने के लिए 200 या अस्वीकार करने के लिए 4xx लौटाएँ।
/confirmPOST {callbackUrl}/confirmसभी ऐप्स द्वारा /try फेज़ स्वीकार करने के बाद ऑपरेशन को कमिट करता है।
/cancelPOST {callbackUrl}/cancelयदि /try फेज़ के दौरान कोई अन्य ऐप विफल होता है तो ऑपरेशन को रोलबैक करता है।

वेबहुक पेलोड

प्रत्येक वेबहुक अनुरोध में निम्नलिखित फ़ील्ड के साथ एक JSON पेलोड शामिल होता है:

फ़ील्डप्रकारविवरण
eventstringइवेंट प्रकार (उदा. user.created, user.authenticated)
userIdstringउपयोगकर्ता का विशिष्ट पहचानकर्ता
emailstringउपयोगकर्ता का ईमेल पता
namestringउपयोगकर्ता का प्रदर्शन नाम
tenantIdstringआपका टेनेंट पहचानकर्ता
timestampstringइवेंट का ISO 8601 टाइमस्टैम्प

प्रोविज़निंग ऐप जोड़ना

प्रोविज़निंग ऐप जोड़ने के लिए, एक नाम, एक कॉलबैक URL, और एक वैकल्पिक API key दें। API key प्रत्येक वेबहुक अनुरोध के Authorization हेडर में Bearer टोकन के रूप में भेजी जाती है, जो आपके ऐप को Authagonal से अनुरोधों को प्रमाणित करने की अनुमति देती है।

परीक्षण

अपने कॉलबैक URL पर एक परीक्षण अनुरोध भेजने के लिए किसी भी प्रोविज़निंग ऐप के बगल में Test पर क्लिक करें। परीक्षण परिणाम HTTP स्टेटस कोड और रिस्पॉन्स बॉडी प्रदर्शित करते हैं, जो आपको सत्यापित करने में मदद करते हैं कि आपका ऐप वेबहुक को सही ढंग से प्राप्त और संसाधित कर रहा है।

Provisioning apps page showing configured apps with test results displaying HTTP status and response body

वेबहुक डिलीवरी और रिस्पॉन्स हैंडलिंग सत्यापित करने के लिए प्रोविज़निंग ऐप्स का परीक्षण करें

प्लान सीमाएँ

प्रोविज़निंग ऐप्स की अधिकतम संख्या प्रति टेनेंट कॉन्फ़िगर करने योग्य है, जिसकी डिफ़ॉल्ट सीमा 6 है। यदि आपके वर्कफ़्लो को अतिरिक्त प्रोविज़निंग लक्ष्यों की आवश्यकता हो तो इस सीमा को एक एडमिन द्वारा समायोजित किया जा सकता है।

API Key प्रमाणीकरण

यदि कोई API key सेट है, तो इसे Authorization हेडर में Bearer टोकन के रूप में भेजा जाता है। Authagonal से वेबहुक अनुरोधों को प्रमाणित करने के लिए इसका उपयोग करें।

टीम

Team पेज पोर्टल एडमिनिस्ट्रेटर का प्रबंधन करता है — वे लोग जो मैनेजमेंट पोर्टल के माध्यम से आपके टेनेंट तक पहुँच और उसे कॉन्फ़िगर कर सकते हैं। सभी टीम सदस्यों के पास आपके टेनेंट कॉन्फ़िगरेशन के हर पहलू तक पूर्ण प्रशासनिक पहुँच होती है।

एडमिन सूची

एडमिन सूची प्रत्येक टीम सदस्य का नाम, ईमेल पता, और उन्हें जोड़े जाने की तिथि प्रदर्शित करती है। वर्तमान उपयोगकर्ता की पंक्ति के बगल में एक "You" संकेतक दिखाया जाता है ताकि आप आसानी से अपना खाता पहचान सकें।

एडमिन को आमंत्रित करना

नए टीम सदस्य को आमंत्रित करने के लिए, उनका ईमेल पता, नाम, और एक अस्थायी पासवर्ड (न्यूनतम 8 वर्ण) दें। आमंत्रित उपयोगकर्ता अस्थायी पासवर्ड से साइन इन करता है और उसे पहले लॉगिन पर बदल देना चाहिए।

आमंत्रण फ़ील्ड

एडमिन आमंत्रण एक पूर्णतः प्रोविज़न किया गया उपयोगकर्ता बनाते हैं — किसी ईमेल राउंड-ट्रिप की आवश्यकता नहीं।

फ़ील्डविवरण
emailनए एडमिन का ईमेल पता। टेनेंट में अद्वितीय होना चाहिए।
nameएडमिन सूची में दिखाया जाने वाला प्रदर्शन नाम।
tempPasswordअस्थायी पासवर्ड जिसका आमंत्रित व्यक्ति पहले लॉगिन पर उपयोग करता है। उन्हें इसे बदलने के लिए कहा जाएगा। ऑटो-जनरेट करने और ईमेल के माध्यम से भेजने के लिए खाली छोड़ें।

एडमिन को हटाना

किसी भी टीम सदस्य की पहुँच रद्द करने के लिए उसके बगल में Remove पर क्लिक करें। हटाने को अंतिम रूप देने से पहले एक पुष्टिकरण डायलॉग दिखाया जाता है। आप स्वयं को नहीं हटा सकते — टीम में हमेशा कम से कम एक एडमिन होना चाहिए।

Team page showing the admin list with name, email, date added columns, a You indicator, and invite/remove controls

Team पेज से पोर्टल एडमिनिस्ट्रेटर प्रबंधित करें

कोई ओनर भूमिका नहीं

कोई "owner" भूमिका भेद नहीं है। सभी पोर्टल एडमिन के पास टेनेंट कॉन्फ़िगरेशन तक पूर्ण पहुँच होती है। आप किसे आमंत्रित करते हैं इस बारे में सावधान रहें।

सपोर्ट

पोर्टल छोड़े बिना Authagonal टीम के साथ एक सपोर्ट टिकट खोलें। प्रत्येक टिकट एक थ्रेडेड बातचीत है, इसलिए आप और हमारी टीम पहली रिपोर्ट से समाधान तक एक ही पृष्ठ पर रहते हैं।

आपके टिकट

सपोर्ट पेज आपके द्वारा उठाए गए हर टिकट को सूचीबद्ध करता है, नवीनतम गतिविधि पहले। एक नज़र में यह देखने के लिए स्टेटस बैज का उपयोग करें कि क्या आप पर प्रतीक्षारत है और क्या हम पर।

Support ticket list showing each ticket's subject, status badge, priority, and last-activity time, with a New ticket button

विषय, स्थिति, प्राथमिकता, और अंतिम गतिविधि के साथ आपके सपोर्ट टिकट

  • प्रत्येक पंक्ति विषय, वर्तमान स्थिति (open, pending, resolved, या closed), प्राथमिकता, और अंतिम गतिविधि का समय दिखाती है।
  • एक टिकट खोलने के लिए New ticket पर क्लिक करें, फिर उसे एक विषय, प्राथमिकता, और अपना पहला संदेश दें।
  • रंग-कोडित स्टेटस बैज उन टिकटों के लिए सूची को स्कैन करना आसान बनाते हैं जिन्हें आपके ध्यान की आवश्यकता है।

एक टिकट थ्रेड

किसी टिकट को खोलने पर पूरी बातचीत दिखती है। उत्तर क्रम में पोस्ट होते हैं, और हमारी टीम के नए संदेश पेज रीलोड किए बिना दिखाई देते हैं।

Support ticket thread showing the conversation between the customer and the Authagonal team with a reply box and file attachment control

आपके और Authagonal टीम के बीच एक टिकट थ्रेड

  • आपके और Authagonal टीम के बीच थ्रेडेड संदेश कालानुक्रमिक क्रम में दिखाए जाते हैं।
  • लॉग, स्क्रीनशॉट, या कॉन्फ़िगरेशन साझा करने के लिए इनलाइन Reply करें और फ़ाइलें संलग्न करें।
  • थ्रेड लाइव अपडेट होता है, इसलिए हमारी टीम का उत्तर भेजते ही दिखाई दे जाता है।
  • यदि आप इसके बजाय किसी सूचना ईमेल का उत्तर देते हैं, तो आपका संदेश स्वचालित रूप से थ्रेड में जोड़ दिया जाता है

उत्तर आप तक कैसे पहुँचते हैं

Authagonal स्टाफ़ एडमिन साइड से टिकटों पर काम करता है। जब भी टीम उत्तर देती है तो आपको ईमेल द्वारा सूचित किया जाता है, इसलिए किसी बातचीत पर नज़र रखने के लिए आपको पोर्टल खुला रखने की आवश्यकता नहीं है।

इम्पोर्ट और माइग्रेट

किसी मौजूदा identity सिस्टम को अपने Authagonal टेनेंट में माइग्रेट करें। दो स्रोत समर्थित हैं — Duende IdentityServer (एक SQL Server डेटाबेस) और Auth0 (Management API)। प्रत्येक एक read-only प्रीव्यू चलाता है ताकि कमिट करने से पहले आप ठीक-ठीक समीक्षा कर सकें कि क्या कॉपी किया जाएगा।

Duende IdentityServer से इम्पोर्ट करें

किसी मौजूदा Duende IdentityServer SQL Server डेटाबेस से क्लाइंट, स्कोप, उपयोगकर्ता, और भूमिकाओं को अपने Authagonal टेनेंट में माइग्रेट करें। इम्पोर्ट दो चरणों में चलता है — प्रीव्यू और कमिट — ताकि कोई भी बदलाव होने से पहले आप समीक्षा कर सकें कि क्या कॉपी किया जाएगा।

क्या इम्पोर्ट होता है

इम्पोर्टर Duende की ConfigurationDb और ASP.NET Identity तालिकाओं से पढ़ता है और मैप की गई पंक्तियों को आपके टेनेंट में लिखता है। persisted grants, device codes, और signing keys जैसे अल्पकालिक artifacts को छोड़ दिया जाता है।

एंटिटीस्रोत तालिकाएँटिप्पणियाँ
ClientsClients, ClientSecrets, ClientGrantTypes, ClientScopes, ClientRedirectUrisअक्षम किए गए क्लाइंट अक्षम अवस्था में इम्पोर्ट होते हैं। समाप्त हो चुके secrets को छोड़ दिया जाता है।
ScopesApiScopes, ApiResources, IdentityResourcesजहाँ पहचाने जाते हैं, वहाँ user-claim मैपिंग संरक्षित रहती हैं।
UsersAspNetUsers, AspNetUserClaimsPassword hashes (ASP.NET Identity V3) यथावत कॉपी होते हैं और पहले लॉगिन पर rehash होते हैं।
RolesAspNetRoles, AspNetUserRolesभूमिका असाइनमेंट संरक्षित रहती हैं।
External LoginsAspNetUserLoginsसंदर्भ के लिए संग्रहीत; इम्पोर्ट के बाद SSO के माध्यम से upstream IdP को पुनः कनेक्ट करें।

कमिट से पहले प्रीव्यू

अपनी Duende ConfigurationDb / IdentityDb connection string पेस्ट करें और Run preview पर क्लिक करें। प्रीव्यू एक read-only कनेक्शन खोलता है और हर उस पंक्ति को गिनता है जो इम्पोर्ट की जाएगी — कोई write नहीं होता।

  • क्लाइंट, स्कोप, उपयोगकर्ता, भूमिकाओं, और भूमिका असाइनमेंट के लिए एंटिटी गणना।
  • जब लक्ष्य टेनेंट में पहले से मेल खाते क्लाइंट, भूमिकाएँ, या स्कोप होते हैं तो ओवरराइट चेतावनियाँ।
  • अज्ञात तालिकाओं और बिना मैप किए गए कॉलम के लिए चेतावनियाँ ताकि आपको पता रहे कि क्या छोड़ा जाएगा।
Import preview panel showing entity counts and warnings before committing the import

गणना और चेतावनियों के साथ प्रीव्यू पैनल

Password Hashes

Duende पासवर्ड को ASP.NET Identity V3 (PBKDF2) का उपयोग करके संग्रहीत करता है। Authagonal का PasswordHasher उस प्रारूप को सीधे सत्यापित करता है और पहले सफल साइन-इन पर मूल प्रारूप में rehash करता है — उपयोगकर्ता बिना किसी reset प्रवाह के अपने मौजूदा पासवर्ड बनाए रखते हैं।

उपयोगकर्ता ID सुलह

यदि इस टेनेंट में पहले से मौजूद किसी उपयोगकर्ता का ईमेल किसी आने वाले रिकॉर्ड के समान है, तो इम्पोर्ट उस खाते के userId को इम्पोर्ट करने से पहले स्रोत sub में बदल देता है, ताकि इम्पोर्ट की गई भूमिकाएँ, लॉगिन, और क्लेम मौजूदा खाते से जुड़ जाएँ और वे ऐप जो पहले से उपयोगकर्ता को उसके स्रोत sub द्वारा संदर्भित करते हैं, cutover के बाद भी resolve होते रहें। खाते का मौजूदा पासवर्ड और प्रोफ़ाइल संरक्षित रहते हैं; स्रोत भूमिकाएँ उसके ऊपर merge हो जाती हैं। प्रीव्यू हर उस खाते की सूची देता है जिसे आपके कमिट करने से पहले reconcile किया जाएगा।

इम्पोर्ट चलाना

प्रीव्यू की समीक्षा करने के बाद Start import पर क्लिक करें। कमिट चरण क्लाइंट, स्कोप, उपयोगकर्ता, भूमिकाओं, और external-login संदर्भों को आपके टेनेंट स्टोर में लिखता है। डुप्लिकेट clientId, scope name, email, और role name पंक्तियों को छोड़ दिया जाता है — इम्पोर्टर को पुनः चलाना सुरक्षित है।

क्या इम्पोर्ट नहीं होता

  • Persisted grants, device codes, server-side sessions — अल्पकालिक, स्वचालित रूप से पुनः जनरेट होते हैं।
  • Signing keys — Authagonal अपनी स्वयं की प्रति-टेनेंट कुंजियाँ जारी करता है।
  • कस्टम कॉलम और तालिकाएँ — Duende के मानक स्कीमा के बाहर की कोई भी चीज़ एक चेतावनी के रूप में सामने आती है ताकि आपको पता रहे कि डेटा छोड़ दिया गया था।
  • अक्षम किए गए क्लाइंट — अक्षम अवस्था में इम्पोर्ट होते हैं; तैयार होने पर उन्हें Clients पेज से पुनः सक्षम करें।

sandbox में उपलब्ध नहीं

इम्पोर्ट केवल live टेनेंट पर चलता है। इम्पोर्ट करने से पहले sandbox मोड से बाहर निकलें।

Auth0 से इम्पोर्ट करें

Authagonal को अपने Auth0 टेनेंट की Management API से कनेक्ट करें और अपने एप्लिकेशन, API, भूमिकाओं, उपयोगकर्ताओं, और enterprise connections को ले आएँ। इम्पोर्ट किए गए उपयोगकर्ता और एप्लिकेशन ID संरक्षित रहते हैं, ताकि मौजूदा sub और client_id संदर्भ cutover के बाद भी resolve होते रहें।

आपको क्या चाहिए होगा

Auth0 में Management API के लिए अधिकृत एक Machine-to-Machine application बनाएँ, जिसे ये read स्कोप दिए गए हों: read:users, read:clients, read:resource_servers, read:roles, read:connections, read:client_grants। इसके domain, client ID, और client secret को इम्पोर्ट फ़ॉर्म में पेस्ट करें — इनका उपयोग केवल इम्पोर्ट के लिए किया जाता है।

क्या इम्पोर्ट होता है

एंटिटीस्रोत तालिकाएँटिप्पणियाँ
Applicationsclients, client-grantsPublic बनाम confidential स्वचालित रूप से पहचाना जाता है। Client secrets को re-hash किया जाता है ताकि वे काम करते रहें।
APIs और scopesresource-serversAudiences और scopes प्रत्येक क्लाइंट को उसके grants से असाइन किए जाते हैं।
Rolesroles + assignmentsप्रति-उपयोगकर्ता भूमिका असाइनमेंट संरक्षित रहती हैं।
Usersusers + identitiesप्रोफ़ाइल और मेटाडेटा स्थानांतरित होते हैं; social/enterprise identities linked logins बन जाते हैं।
Connectionsconnections (OIDC)Enterprise OIDC connections federated providers बन जाते हैं। SAML, social, और database connections को एक चेतावनी के साथ छोड़ दिया जाता है।

Passwords

Auth0 की Management API कभी password hashes नहीं लौटाती। यदि आपके पास Auth0 का support-assisted bulk password export (NDJSON) है, तो उसे प्रदान करें — bcrypt hashes यथावत इम्पोर्ट होते हैं और आपके उपयोगकर्ता बिना किसी reset के अपने पासवर्ड बनाए रखते हैं। वह फ़ाइल आपका पूरा उपयोगकर्ता सेट भी वहन करती है, जो Auth0 की 1,000-उपयोगकर्ता API सूचीकरण सीमा को हटा देती है। इसके बिना, उपयोगकर्ता प्रोफ़ाइल के रूप में इम्पोर्ट होते हैं और पहले साइन-इन पर एक नया पासवर्ड सेट करते हैं।

वही प्रीव्यू, rotation, और सीमाएँ

ऊपर वर्णित प्रीव्यू, owner-userId rotation, पुनः-चलाने योग्य कमिट, और sandbox प्रतिबंध Auth0 इम्पोर्ट पर भी लागू होते हैं।

API संदर्भ

प्रत्येक टेनेंट https://{slug}.authagonal.io पर एक मानक-अनुरूप OIDC सर्वर उपलब्ध कराता है। सभी एंडपॉइंट OAuth 2.0 और OpenID Connect विनिर्देशों का पालन करते हैं। यह संदर्भ हर उस एंडपॉइंट को कवर करता है जिससे आपके एप्लिकेशन को इंटरैक्ट करने की आवश्यकता हो सकती है।

OIDC Authorization Code Flow with PKCE — sequence diagram showing the 9-step flow between your app, the browser, and Authagonal

PKCE के साथ Authorization Code Flow

OIDC Discovery और JWKS

Discovery दस्तावेज़ OIDC क्लाइंट लाइब्रेरीज़ को स्वयं को स्वचालित रूप से कॉन्फ़िगर करने देता है। किसी भी एंडपॉइंट के लिए प्रमाणीकरण आवश्यक नहीं है।

GET /.well-known/openid-configuration

OpenID Provider Configuration दस्तावेज़ लौटाता है। प्रतिक्रिया में वह सारा मेटाडेटा शामिल होता है जो आपके क्लाइंट को इस टेनेंट के साथ इंटरैक्ट करने के लिए चाहिए।

फ़ील्डविवरण
issuerटेनेंट issuer URL
authorization_endpointauthorization अनुरोधों के लिए URL
token_endpointटोकन एक्सचेंज के लिए URL
userinfo_endpointउपयोगकर्ता क्लेम प्राप्त करने के लिए URL
jwks_uriJSON Web Key Set के लिए URL
revocation_endpointटोकन रिवोकेशन के लिए URL
introspection_endpointटोकन इंट्रोस्पेक्शन के लिए URL
end_session_endpointलॉगआउट / end-session के लिए URL
device_authorization_endpointdevice authorization अनुरोधों के लिए URL
pushed_authorization_request_endpointPushed Authorization Request एंडपॉइंट (RFC 9126) का URL।
require_pushed_authorization_requestsक्या टेनेंट वैश्विक रूप से PAR की आवश्यकता रखता है। जब यह <code>false</code> हो तब भी, अलग-अलग क्लाइंट <code>RequirePushedAuthorizationRequests = true</code> सेट कर सकते हैं।
scopes_supportedसमर्थित स्कोप की सूची
response_types_supportedसमर्थित response प्रकार
grant_types_supportedसमर्थित grant प्रकार
code_challenge_methods_supportedसमर्थित PKCE विधियाँ (S256)
backchannel_logout_supportedक्या back-channel logout समर्थित है

GET /.well-known/openid-configuration/jwks

टोकन हस्ताक्षरों को सत्यापित करने के लिए उपयोग किया जाने वाला JSON Web Key Set लौटाता है। प्रतिक्रिया में RSA सार्वजनिक कुंजियों के साथ एक keys array होता है, जिनमें से प्रत्येक में kty, use, kid, alg, n, और e फ़ील्ड शामिल होते हैं।

Fetch discovery document
curl https://acme.authagonal.io/.well-known/openid-configuration

Authorization एंडपॉइंट

GET /connect/authorize

एक authorization code flow आरंभ करता है। उपयोगकर्ता के पास एक सक्रिय सत्र होना चाहिए, अन्यथा उन्हें लॉगिन पेज पर रीडायरेक्ट कर दिया जाएगा। सफल होने पर, उपयोगकर्ता को एक authorization code के साथ वापस आपके एप्लिकेशन पर रीडायरेक्ट किया जाता है।

पैरामीटरआवश्यकविवरण
response_typeहाँ"code" होना चाहिए
client_idहाँआपका पंजीकृत क्लाइंट पहचानकर्ता
redirect_uriहाँएक पंजीकृत redirect URI से बिल्कुल मेल खाना चाहिए
scopeहाँस्कोप की स्पेस-पृथक सूची (उदा. "openid profile email")
stateअनुशंसितCSRF सुरक्षा के लिए अपारदर्शी मान, रीडायरेक्ट में अपरिवर्तित लौटाया जाता है
code_challengePKCE होने पर आवश्यकcode_verifier का Base64url-एन्कोडेड SHA-256 hash
code_challenge_methodPKCE होने पर आवश्यक"S256" होना चाहिए
nonceवैकल्पिकreplay सुरक्षा के लिए ID token से बंधा मान
login_hintवैकल्पिकलॉगिन पेज पर ईमेल फ़ील्ड को पहले से भरें

सफलता प्रतिक्रिया: code और state query पैरामीटर के साथ redirect_uri पर 302 रीडायरेक्ट।

त्रुटि प्रतिक्रिया: error, error_description, और state query पैरामीटर के साथ 302 रीडायरेक्ट।

PKCE आवश्यक

सभी क्लाइंट के लिए डिफ़ॉल्ट रूप से PKCE आवश्यक है। एक code_verifier (43 या अधिक वर्णों की एक यादृच्छिक स्ट्रिंग) जनरेट करें, इसे SHA-256 से hash करें, और code_challenge बनाने के लिए परिणाम को base64url-एन्कोड करें।

Pushed Authorization Requests (PAR)

RFC 9126। हर authorize पैरामीटर को URL पर रखने के बजाय, आपका क्लाइंट सामान्य क्लाइंट प्रमाणीकरण के साथ उन्हें /connect/par पर POST करता है और एक अल्पकालिक अपारदर्शी request_uri वापस पाता है। फिर ब्राउज़र /connect/authorize?client_id=...&request_uri=... पर जाता है — और कुछ भी ब्राउज़र इतिहास, सर्वर लॉग, या Referer हेडर में नहीं पहुँचता, और सर्वर पहले ही क्लाइंट auth के तहत पैरामीटर की अखंडता जाँच चुका होता है।

POST /connect/par

क्लाइंट प्रमाणीकरण /connect/token के समान है: client_id/client_secret के साथ HTTP Basic, या form-एन्कोडेड क्रेडेंशियल। Public क्लाइंट बिना secret के पोस्ट करते हैं। body में वही पैरामीटर होते हैं जो आप सामान्यतः /connect/authorize पर भेजते हैं; request_uri स्वयं अस्वीकृत कर दिया जाता है (PAR को chain करना विनिर्देश के §2.1 द्वारा निषिद्ध है)। 201 Created लौटाता है।

पैरामीटरआवश्यकविवरण
client_idहाँआपका क्लाइंट ID। प्रमाणित क्लाइंट से मेल खाना चाहिए।
client_secretConfidential क्लाइंटआपका क्लाइंट secret। confidential क्लाइंट के लिए आवश्यक।
response_typeहाँ"code" होना चाहिए
redirect_uriहाँएक पंजीकृत redirect URI से बिल्कुल मेल खाना चाहिए
scopeहाँस्कोप की स्पेस-पृथक सूची (उदा. "openid profile email")
code_challengePKCE होने पर आवश्यकcode_verifier का Base64url-एन्कोडेड SHA-256 hash
code_challenge_methodPKCE होने पर आवश्यक"S256" होना चाहिए
stateअनुशंसितCSRF सुरक्षा के लिए अपारदर्शी मान, रीडायरेक्ट में अपरिवर्तित लौटाया जाता है
nonceवैकल्पिकreplay सुरक्षा के लिए ID token से बंधा मान

प्रतिक्रिया

फ़ील्डविवरण
request_uriएकल-उपयोग अपारदर्शी संदर्भ, उदा. <code>urn:ietf:params:oauth:request_uri:abc123…</code>। इसे <code>request_uri</code> के रूप में <code>/connect/authorize</code> पर पास करें।
expires_in<code>request_uri</code> का जीवनकाल सेकंड में। डिफ़ॉल्ट 90 है — विशिष्ट reference-IdP मान।

फ़ॉलो-अप GET /connect/authorize?client_id=…&request_uri=… पर, अन्य सभी पैरामीटर pushed payload से लिए जाते हैं और कोई भी अतिरिक्त query पैरामीटर अनदेखा कर दिया जाता है। authorize कॉल पर client_id उस क्लाइंट से मेल खाना चाहिए जिसने अनुरोध push किया था। एक बार उपयोग होने पर (या expires_in बीत जाने पर), request_uri स्टोर से हटा दिया जाता है।

प्रति क्लाइंट PAR अनिवार्य करना

किसी क्लाइंट से सादे /connect/authorize कॉल अस्वीकार करने के लिए उस क्लाइंट पर Require PAR टॉगल करें (Portal → Clients → client → Advanced)। उच्च-जोखिम वाले क्लाइंट के लिए अनुशंसित दृष्टिकोण RequirePushedAuthorizationRequests = true को PKCE के साथ जोड़ता है — जो URL बार को पूरी तरह से एक आक्रमण सतह के रूप में हटा देता है।
Push an authorization request and follow up
# 1. Push parameters (server returns request_uri + expires_in)
curl -X POST https://acme.authagonal.io/connect/par \
  -u "my-app:CLIENT_SECRET" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "response_type=code" \
  -d "redirect_uri=https://app.example.com/callback" \
  -d "scope=openid profile email" \
  -d "state=$(openssl rand -hex 16)" \
  -d "code_challenge=YOUR_CODE_CHALLENGE" \
  -d "code_challenge_method=S256"

# 2. Send the user to /authorize with only client_id + request_uri
# https://acme.authagonal.io/connect/authorize?client_id=my-app&request_uri=urn:ietf:params:oauth:request_uri:abc123...

Token एंडपॉइंट

POST /connect/token

क्रेडेंशियल को टोकन के लिए एक्सचेंज करता है। अनुरोधों को Content-Type: application/x-www-form-urlencoded का उपयोग करना चाहिए। क्लाइंट प्रमाणीकरण HTTP Basic auth (Authorization: Basic base64(client_id:client_secret)) के माध्यम से या form body पैरामीटर (client_id + client_secret) के रूप में प्रदान किया जा सकता है।

Authorization Code Grant

पैरामीटरआवश्यकविवरण
grant_typeहाँ"authorization_code"
codeहाँरीडायरेक्ट से प्राप्त authorization code
redirect_uriहाँauthorization अनुरोध में उपयोग किए गए URI से मेल खाना चाहिए
code_verifierPKCE होने पर आवश्यकcode_challenge जनरेट करने के लिए उपयोग की गई मूल यादृच्छिक स्ट्रिंग
client_idहाँआपका क्लाइंट पहचानकर्ता (यदि Basic auth का उपयोग नहीं कर रहे हैं)
client_secretConfidential क्लाइंटआपका क्लाइंट secret (यदि Basic auth का उपयोग नहीं कर रहे हैं)

Refresh Token Grant

पैरामीटरआवश्यकविवरण
grant_typeहाँ"refresh_token"
refresh_tokenहाँएक्सचेंज करने के लिए refresh token
client_idहाँआपका क्लाइंट पहचानकर्ता
client_secretConfidential क्लाइंटआपका क्लाइंट secret

Client Credentials Grant

पैरामीटरआवश्यकविवरण
grant_typeहाँ"client_credentials"
client_idहाँआपका क्लाइंट पहचानकर्ता
client_secretहाँआपका क्लाइंट secret
scopeवैकल्पिकअनुरोध करने के लिए स्पेस-पृथक स्कोप

Device Code Grant

पैरामीटरआवश्यकविवरण
grant_typeहाँ"urn:ietf:params:oauth:grant-type:device_code"
device_codeहाँdevice authorization प्रतिक्रिया से प्राप्त device code
client_idहाँआपका क्लाइंट पहचानकर्ता
client_secretConfidential क्लाइंटआपका क्लाइंट secret

Token प्रतिक्रिया:

फ़ील्डविवरण
access_tokenAPI कॉल के लिए access token
token_type"Bearer"
expires_inसेकंड में टोकन जीवनकाल
id_tokenOpenID Connect ID token (जब openid स्कोप का अनुरोध किया जाता है)
refresh_tokenRefresh token (जब offline_access स्कोप प्रदान किया जाता है)
Exchange authorization code with PKCE
curl -X POST https://acme.authagonal.io/connect/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "code=AUTHORIZATION_CODE" \
  -d "redirect_uri=https://app.example.com/callback" \
  -d "client_id=my-app" \
  -d "code_verifier=YOUR_CODE_VERIFIER"

UserInfo एंडपॉइंट

GET /connect/userinfo

प्रमाणित उपयोगकर्ता के बारे में क्लेम लौटाता है। openid स्कोप के साथ एक वैध access token की आवश्यकता होती है।

फ़ील्डप्रकारविवरण
substringअद्वितीय उपयोगकर्ता पहचानकर्ता
emailstringउपयोगकर्ता ईमेल पता
email_verifiedbooleanक्या ईमेल सत्यापित किया गया है
given_namestringपहला नाम
family_namestringअंतिम नाम
namestringपूरा प्रदर्शन नाम
phone_numberstringफ़ोन नंबर (यदि प्रदान किया गया हो)
org_idstringसंगठन पहचानकर्ता
rolesstring[]असाइन की गई भूमिकाओं का array
groupsobject[]समूह सदस्यताओं का array, प्रत्येक में id और name के साथ
Fetch user info
curl https://acme.authagonal.io/connect/userinfo \
  -H "Authorization: Bearer ACCESS_TOKEN"

Token Introspection (RFC 7662)

POST /connect/introspect

एक टोकन को सत्यापित करता है और उसका मेटाडेटा लौटाता है। क्लाइंट क्रेडेंशियल (Basic auth या form body पैरामीटर) की आवश्यकता होती है।

पैरामीटरआवश्यकविवरण
tokenहाँintrospect करने के लिए टोकन
token_type_hintवैकल्पिकटोकन प्रकार के बारे में संकेत (उदा. "refresh_token")

सक्रिय टोकन प्रतिक्रिया:

फ़ील्डविवरण
activetrue
subSubject (उपयोगकर्ता ID)
client_idवह क्लाइंट जिसे टोकन जारी किया गया था
scopeप्रदान किए गए स्पेस-पृथक स्कोप
issIssuer
expसमाप्ति समय (Unix timestamp)
iatजारी-किए-जाने का समय (Unix timestamp)
audAudience
token_typeटोकन प्रकार (उदा. "Bearer")

निष्क्रिय टोकन प्रतिक्रिया: { "active": false }

हमेशा 200 OK

RFC 7662 के अनुसार, introspection एंडपॉइंट हमेशा 200 OK लौटाता है — कभी 401 या 403 नहीं। यह token enumeration हमलों को रोकता है। एक अमान्य या समाप्त टोकन बस active: false लौटाता है।
Introspect a token
curl -X POST https://acme.authagonal.io/connect/introspect \
  -u "my-app:CLIENT_SECRET" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "token=ACCESS_OR_REFRESH_TOKEN"

Token Revocation (RFC 7009)

POST /connect/revocation

पहले जारी किए गए टोकन को रद्द करता है। क्लाइंट क्रेडेंशियल की आवश्यकता होती है।

पैरामीटरआवश्यकविवरण
tokenहाँरद्द करने के लिए टोकन
token_type_hintवैकल्पिकटोकन प्रकार के बारे में संकेत (उदा. "refresh_token")

RFC 7009 विनिर्देश के अनुसार, एंडपॉइंट हमेशा 200 OK लौटाता है, यहाँ तक कि अमान्य या पहले से रद्द किए गए टोकन के लिए भी।

केवल Refresh Token

वर्तमान में refresh token रिवोकेशन का समर्थन करता है। Access token स्टेटलेस JWT होते हैं और उन्हें रद्द नहीं किया जा सकता — वे स्वाभाविक रूप से समाप्त होने तक वैध रहते हैं।

Device Authorization (RFC 8628)

POST /connect/deviceauthorization

इनपुट-सीमित उपकरणों (CLI, स्मार्ट TV, IoT उपकरण) के लिए device authorization flow आरंभ करता है। डिवाइस उपयोगकर्ता को एक कोड दिखाता है, जो फिर ब्राउज़र वाले एक अलग डिवाइस पर अनुरोध को स्वीकृत करता है।

पैरामीटरआवश्यकविवरण
client_idहाँआपका क्लाइंट पहचानकर्ता
client_secretConfidential क्लाइंटआपका क्लाइंट secret
scopeवैकल्पिकस्पेस-पृथक स्कोप (डिफ़ॉल्ट "openid")

प्रतिक्रिया:

फ़ील्डविवरण
device_codeडिवाइस सत्यापन कोड (polling के लिए उपयोग किया जाता है)
user_codeXXXX-XXXX प्रारूप में उपयोगकर्ता-सम्मुख कोड
verification_uriवह URL जिस पर उपयोगकर्ता कोड दर्ज करने के लिए जाता है
verification_uri_completeuser_code पहले से भरा हुआ URL
expires_in600 (सेकंड — कोड 10 मिनट तक वैध है)
interval5 (सेकंड — न्यूनतम polling अंतराल)

स्वीकृति प्रवाह: उपयोगकर्ता verification_uri पर जाता है, user_code दर्ज करता है, और अनुरोध स्वीकृत करता है। इस बीच, डिवाइस device_code के साथ token एंडपॉइंट को poll करता है।

Polling त्रुटि कोड:

त्रुटिअर्थ
authorization_pendingउपयोगकर्ता ने अभी तक स्वीकृत नहीं किया — polling जारी रखें
expired_tokendevice code समाप्त हो गया है — प्रवाह पुनः आरंभ करें
access_deniedउपयोगकर्ता ने authorization अनुरोध अस्वीकार कर दिया
Request device authorization
curl -X POST https://acme.authagonal.io/connect/deviceauthorization \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id=my-cli" \
  -d "scope=openid profile email"

End Session / Logout

GET POST /connect/endsession

वर्तमान उपयोगकर्ता सत्र को साइन आउट करता है, पंजीकृत BackChannelLogoutUri वाले सभी क्लाइंट के लिए back-channel logout ट्रिगर करता है, और सभी grants रद्द करता है।

पैरामीटरआवश्यकविवरण
id_token_hintवैकल्पिकID token — post_logout_redirect_uri को सत्यापित करने के लिए उपयोग किया जाता है
post_logout_redirect_uriवैकल्पिकलॉगआउट के बाद कहाँ रीडायरेक्ट करना है (पंजीकृत होना चाहिए)
stateवैकल्पिकरीडायरेक्ट में लौटाया गया अपारदर्शी मान

यदि एक वैध post_logout_redirect_uri प्रदान किया जाता है और एक पंजीकृत URI से मेल खाता है, तो उपयोगकर्ता को 302 रीडायरेक्ट प्राप्त होता है। अन्यथा, एक JSON प्रतिक्रिया पुष्टि करती है कि सत्र समाप्त कर दिया गया है।

Back-Channel Logout

जब कोई उपयोगकर्ता साइन आउट करता है, तो Authagonal प्रत्येक क्लाइंट के BackChannelLogoutUri पर एक हस्ताक्षरित JWT भेजता है। JWT में sub, aud, iss, और http://schemas.openid.net/event/backchannel-logout event क्लेम शामिल होते हैं। यह सूचना प्राप्त होने पर आपके एप्लिकेशन को उपयोगकर्ता के स्थानीय सत्र को अमान्य कर देना चाहिए।

SCIM 2.0 API संदर्भ

Authagonal स्वचालित उपयोगकर्ता और समूह प्रोविज़निंग के लिए SCIM 2.0 प्रोटोकॉल का समर्थन करता है। Okta, Azure AD, और OneLogin जैसे identity provider आपके Authagonal टेनेंट को आपकी कॉर्पोरेट डायरेक्टरी के साथ सिंक में रखने के लिए इस API का उपयोग कर सकते हैं।

Base URL: https://{slug}.authagonal.io/scim/v2

प्रमाणीकरण: सभी अनुरोधों के लिए एक Bearer token आवश्यक है। पोर्टल में Settings > SCIM Provisioning के अंतर्गत एक SCIM token जनरेट करें।

सामान्य हेडर:

हेडरमान
AuthorizationBearer SCIM_TOKEN
Content-Typeapplication/scim+json

List एंडपॉइंट startIndex (1-आधारित) और count (अधिकतम 200) query पैरामीटर के माध्यम से pagination का समर्थन करते हैं, और filter पैरामीटर (उदा. userName eq "[email protected]") के माध्यम से filtering का।

Users

GET /scim/v2/Users — वैकल्पिक pagination और filtering के साथ उपयोगकर्ताओं की सूची बनाएँ।

Query पैरामीटरविवरण
startIndexपहले परिणाम का 1-आधारित index (डिफ़ॉल्ट: 1)
countप्रति पेज परिणामों की अधिकतम संख्या (अधिकतम: 200)
filterSCIM filter अभिव्यक्ति (उदा. userName eq "[email protected]")

GET /scim/v2/Users/{id} — किसी एक उपयोगकर्ता को उसके Authagonal उपयोगकर्ता ID द्वारा प्राप्त करें।

POST /scim/v2/Users — एक नया उपयोगकर्ता बनाएँ। 201 Created लौटाता है।

फ़ील्डआवश्यकविवरण
userNameहाँईमेल पता (टेनेंट के भीतर अद्वितीय होना चाहिए)
name.givenNameनहींपहला नाम
name.familyNameनहींअंतिम नाम
displayNameनहींपूरा प्रदर्शन नाम
activeनहींक्या उपयोगकर्ता सक्रिय है (डिफ़ॉल्ट: true)
externalIdनहींupstream identity provider से पहचानकर्ता

PUT /scim/v2/Users/{id} — किसी उपयोगकर्ता संसाधन का पूर्ण प्रतिस्थापन। सभी फ़ील्ड प्रदान किए जाने चाहिए।

PATCH /scim/v2/Users/{id} — SCIM PatchOp का उपयोग करके आंशिक अपडेट।

ऑपरेशनसमर्थित पथउदाहरण मान
replaceactive, name.givenName, name.familyName, externalIdtrue / false, या एक string मान
addname.givenName, name.familyName, externalIdएक string मान
removeexternalId(किसी मान की आवश्यकता नहीं)

DELETE /scim/v2/Users/{id} — उपयोगकर्ता को soft delete करता है (खाता निष्क्रिय करता है और सभी टोकन रद्द करता है)। 204 No Content लौटाता है।

Create a user via SCIM
curl -X POST https://acme.authagonal.io/scim/v2/Users \
  -H "Authorization: Bearer SCIM_TOKEN" \
  -H "Content-Type: application/scim+json" \
  -d '{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "userName": "[email protected]",
    "name": {
      "givenName": "Jane",
      "familyName": "Smith"
    },
    "displayName": "Jane Smith",
    "active": true,
    "externalId": "ext-12345"
  }'

Groups

GET /scim/v2/Groups — वैकल्पिक pagination और filtering के साथ सभी समूहों की सूची बनाएँ।

GET /scim/v2/Groups/{id} — किसी एक समूह को ID द्वारा प्राप्त करें, उसकी सदस्य सूची सहित।

POST /scim/v2/Groups — एक नया समूह बनाएँ। 201 Created लौटाता है।

फ़ील्डआवश्यकविवरण
displayNameहाँसमूह प्रदर्शन नाम
membersनहींसदस्य ऑब्जेक्ट का array, प्रत्येक में उपयोगकर्ता ID वाला एक value फ़ील्ड
externalIdनहींupstream identity provider से पहचानकर्ता

PUT /scim/v2/Groups/{id} — किसी समूह संसाधन का पूर्ण प्रतिस्थापन (उसकी सदस्य सूची सहित)।

PATCH /scim/v2/Groups/{id} — समूह सदस्यों को जोड़ने या हटाने के लिए आंशिक अपडेट।

DELETE /scim/v2/Groups/{id} — समूह को hard delete करता है। 204 No Content लौटाता है।

Add members to a group via PATCH
curl -X PATCH https://acme.authagonal.io/scim/v2/Groups/GROUP_ID \
  -H "Authorization: Bearer SCIM_TOKEN" \
  -H "Content-Type: application/scim+json" \
  -d '{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
      {
        "op": "add",
        "path": "members",
        "value": [
          { "value": "USER_ID_1" },
          { "value": "USER_ID_2" }
        ]
      }
    ]
  }'

SCIM त्रुटि प्रतिक्रियाएँ

जब कोई SCIM अनुरोध विफल होता है, तो प्रतिक्रिया body SCIM त्रुटि स्कीमा का पालन करती है: { "schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"], "status": "400", "detail": "..." }। सामान्य स्थिति कोड में 400 (bad request), 404 (resource not found), 409 (conflict / duplicate), और 429 (rate limited) शामिल हैं।

Portal API (ऑटोमेशन)

Portal API आपके अपने बैकएंड को वह सब कुछ ऑटोमेट करने देता है जो आप पोर्टल में कर सकते हैं — उपयोगकर्ता, क्लाइंट, ग्रुप, रोल, स्कोप, SSO कनेक्शन और सेटिंग्स प्रबंधित करना — एक machine-to-machine क्रेडेंशियल का उपयोग करके। यह वही API है जिसे पोर्टल UI कॉल करता है।

Base URL: https://portal-api.<your-domain>/api/v1. अनुरोध एक Bearer access token के साथ प्रमाणित होते हैं; टेनेंट को URL से नहीं, टोकन से लिया जाता है।

एक API क्रेडेंशियल बनाना

पोर्टल में, Clients → Create API credential खोलें, एक एक्सेस स्तर चुनें, और उसे एक नाम दें। Authagonal Portal API के लिए तैयार एक OAuth client_credentials क्लाइंट जनरेट करता है और एक client ID व secret लौटाता है।

secret तुरंत कॉपी करें

client secret केवल एक बार दिखाया जाता है, बनाने के तुरंत बाद। डायलॉग बंद करने से पहले इसे अपने secret manager में स्टोर करें — यदि आप इसे खो देते हैं, तो क्रेडेंशियल हटाएँ और एक नया बनाएँ।

एक्सेस स्तर

स्कोपग्रांट्स
tenant:ownerपूर्ण एक्सेस, जिसमें पूरे टेनेंट को हटाने जैसी विनाशकारी केवल-Owner क्रियाएँ शामिल हैं।
tenant:adminकेवल-Owner क्रियाओं को छोड़कर सब कुछ प्रबंधित करें — उपयोगकर्ता, क्लाइंट, SSO, ग्रुप, रोल, ब्रांडिंग और सेटिंग्स।
tenant:developerक्लाइंट, स्कोप और provisioning ऐप्स प्रबंधित करें।
tenant:supportसपोर्ट कार्यों के लिए उपयोगकर्ताओं को पढ़ें और प्रबंधित करें।

आप केवल वही ग्रांट कर सकते हैं जो आपके पास है

कोई क्रेडेंशियल उसे बनाने वाले व्यक्ति से अधिक विशेषाधिकार-प्राप्त नहीं हो सकता। एक admin owner-स्कोप वाला क्रेडेंशियल नहीं बना सकता, और प्लेटफ़ॉर्म प्रशासनिक स्कोप कभी किसी क्रेडेंशियल को ग्रांट नहीं किया जा सकता।

एक टोकन प्राप्त करना

अपने टेनेंट के token endpoint — https://<your-tenant>.<your-domain>/connect/token — पर क्रेडेंशियल को एक access token के बदले प्राप्त करें, फिर टोकन को Portal API पर Bearer header के रूप में भेजें। टोकन एक घंटे के लिए मान्य होते हैं।

एक टोकन प्राप्त करें, फिर API कॉल करें
# 1. Exchange the credential for an access token (your tenant's token endpoint)
curl -X POST https://acme.authagonal.io/connect/token \
  -d grant_type=client_credentials \
  -d client_id=api-3f2a... \
  -d client_secret=YOUR_CLIENT_SECRET \
  -d scope=tenant:admin

# Response: { "access_token": "ey...", "token_type": "Bearer", "expires_in": 3600 }

# 2. Call the Portal API with the access token
curl https://portal-api.authagonal.io/api/v1/users \
  -H "Authorization: Bearer $ACCESS_TOKEN"

एंडपॉइंट्स

सभी पाथ base URL के सापेक्ष हैं और एक Bearer access token की आवश्यकता होती है। प्रत्येक समूह के बगल में दिया गया स्कोप उसके लिए आवश्यक न्यूनतम क्रेडेंशियल एक्सेस स्तर है। List एंडपॉइंट startIndex और count क्वेरी पैरामीटर स्वीकार करते हैं।

क्लाइंटtenant:developer

GET/api/v1/clients— OAuth क्लाइंट सूचीबद्ध करें।

GET/api/v1/clients/{id}— ID द्वारा एक क्लाइंट प्राप्त करें।

POST/api/v1/clients— एक क्लाइंट बनाएँ। client ID लौटाता है और, confidential क्लाइंट के लिए, एक एक-बार का secret।

PUT/api/v1/clients/{id}— एक क्लाइंट अपडेट करें (redirect URIs, grant types, टोकन lifetimes, PKCE/PAR आवश्यकताएँ)।

DELETE/api/v1/clients/{id}— एक क्लाइंट हटाएँ।

POST/api/v1/clients/api-credential— एक machine-to-machine Portal API क्रेडेंशियल बनाएँ।

उपयोगकर्ताtenant:support

GET/api/v1/users— उपयोगकर्ता सूचीबद्ध करें। startIndex, count, और खोज (ईमेल / नाम उपसर्ग) का समर्थन करता है।

GET/api/v1/users/count— टेनेंट के लिए कुल उपयोगकर्ता संख्या।

GET/api/v1/users/stats/mfa— MFA एनरोलमेंट आँकड़े।

GET/api/v1/users/{id}— एक उपयोगकर्ता प्राप्त करें।

POST/api/v1/users— एक ईमेल और पासवर्ड के साथ एक उपयोगकर्ता बनाएँ।

PUT/api/v1/users/{id}— एक उपयोगकर्ता अपडेट करें (प्रोफ़ाइल, ईमेल, enabled/blocked स्थिति)।

DELETE/api/v1/users/{id}— एक उपयोगकर्ता हटाएँ।

GET/api/v1/users/{id}/mfa— Get a user's enrolled MFA methods.

DELETE/api/v1/users/{id}/mfa— Reset a user's MFA enrollment.

रोलtenant:admin

GET/api/v1/roles— रोल सूचीबद्ध करें।

POST/api/v1/roles— एक रोल बनाएँ।

DELETE/api/v1/roles/{id}— एक रोल हटाएँ।

POST/api/v1/roles/assign— किसी उपयोगकर्ता को एक रोल असाइन करें।

POST/api/v1/roles/unassign— किसी उपयोगकर्ता से एक रोल हटाएँ।

ग्रुपtenant:admin

GET/api/v1/groups— ग्रुप सूचीबद्ध करें।

GET/api/v1/groups/{id}— एक ग्रुप उसके सदस्यों सहित प्राप्त करें।

POST/api/v1/groups— एक ग्रुप बनाएँ।

POST/api/v1/groups/{id}/members— एक ग्रुप में सदस्य जोड़ें।

DELETE/api/v1/groups/{groupId}/members/{userId}— एक ग्रुप से एक सदस्य हटाएँ।

DELETE/api/v1/groups/{id}— एक ग्रुप हटाएँ।

GET/api/v1/group-role-mappings— ग्रुप-से-रोल मैपिंग सूचीबद्ध करें (ग्रुप सदस्यता द्वारा टोकन जारी करते समय ग्रांट किए गए रोल)।

स्कोपtenant:developer

GET/api/v1/scopes— API स्कोप सूचीबद्ध करें।

POST/api/v1/scopes— एक स्कोप बनाएँ।

DELETE/api/v1/scopes/{name}— एक स्कोप हटाएँ।

SSO कनेक्शनtenant:admin

GET/api/v1/saml/connections— SAML कनेक्शन सूचीबद्ध करें।

POST/api/v1/saml/connections— एक SAML कनेक्शन बनाएँ।

DELETE/api/v1/saml/connections/{id}— एक SAML कनेक्शन हटाएँ।

GET/api/v1/oidc/connections— OIDC कनेक्शन सूचीबद्ध करें।

POST/api/v1/oidc/connections— एक OIDC कनेक्शन बनाएँ।

DELETE/api/v1/oidc/connections/{id}— एक OIDC कनेक्शन हटाएँ।

GET/api/v1/sso/domains— SSO कनेक्शन पर रूट किए गए डोमेन सूचीबद्ध करें (home-realm discovery)।

ब्रांडिंगtenant:admin

GET/api/v1/branding— टेनेंट ब्रांडिंग प्राप्त करें (रंग, लोगो, समर्थित भाषाएँ)।

PUT/api/v1/branding— टेनेंट ब्रांडिंग अपडेट करें।

सेटिंग्सtenant:admin

GET/api/v1/settings— टेनेंट सेटिंग्स प्राप्त करें (webhooks, सार्वजनिक sign-up, टोकन नीति)।

PUT/api/v1/settings— टेनेंट सेटिंग्स अपडेट करें।

POST/api/v1/settings/webhook-secret/regenerate— webhook signing secret रोटेट करें।

POST/api/v1/settings/test-email— वर्तमान ईमेल कॉन्फ़िगरेशन के साथ एक परीक्षण ईमेल भेजें।

कस्टम डोमेन और ईमेलtenant:admin

GET/api/v1/custom-domains— कस्टम लॉगिन डोमेन और उनकी सत्यापन स्थिति सूचीबद्ध करें।

POST/api/v1/custom-domains— एक कस्टम डोमेन जोड़ें।

POST/api/v1/custom-domains/{domain}/verify— एक कस्टम डोमेन के लिए DNS सत्यापन ट्रिगर करें।

DELETE/api/v1/custom-domains/{domain}— एक कस्टम डोमेन हटाएँ।

GET/api/v1/email/domains— प्रेषक ईमेल डोमेन सूचीबद्ध करें।

ऑडिट लॉगtenant:admin

GET/api/v1/audit— टेनेंट ऑडिट लॉग क्वेरी करें।

SCIM के माध्यम से उपयोगकर्ताओं का provisioning

किसी IdP (Entra, Okta) से बल्क उपयोगकर्ता और ग्रुप provisioning के लिए, इन एंडपॉइंट्स के बजाय SCIM 2.0 API का उपयोग करें।

उदाहरण: एक उपयोगकर्ता बनाएँ

POST /api/v1/users
curl -X POST https://portal-api.authagonal.io/api/v1/users \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "S3cure-temp-passw0rd",
    "firstName": "Ada",
    "lastName": "Lovelace"
  }'

# 200 OK
# { "userId": "8f3a...", "email": "[email protected]" }

जो कुछ भी UI कर सकता है

Portal API वही एंडपॉइंट उजागर करता है जिनका उपयोग पोर्टल UI करता है, इसलिए कोई भी ऑपरेशन जो आप पोर्टल में कर सकते हैं उसे ऑटोमेट किया जा सकता है — क्रेडेंशियल के एक्सेस स्तर के अधीन।

लॉगिन स्क्रीन

ये वे होस्टेड स्क्रीन हैं जो आपके अंतिम उपयोगकर्ता आपके टेनेंट के auth server पर देखते हैं। Authagonal हर स्क्रीन उपयोग के लिए तैयार भेजता है, इसलिए आपको कोई UI बनाए बिना एक संपूर्ण, सुरक्षित sign-in अनुभव मिलता है। यह पेज प्रत्येक स्क्रीन के बारे में बताता है और दिखाता है कि कौन-सी पोर्टल सेटिंग्स इसे नियंत्रित करती हैं।

पूरी तरह व्हाइट-लेबल

यहाँ हर स्क्रीन आपके टेनेंट की Branding सेटिंग्स द्वारा रंगी जाती है — आपका लोगो, रंग, ऐप नाम और कस्टम CSS। स्क्रीन prefers-color-scheme का भी सम्मान करती हैं, इसलिए वे उपयोगकर्ता के डिवाइस से मेल खाने के लिए light और dark के बीच स्विच करती हैं।

साइन इन

Hosted sign-in screen with an email field, Continue button, single sign-on provider buttons, and forgot-password and create-account links
  • ईमेल-पहले, दो-चरण प्रवाह: उपयोगकर्ता अपना ईमेल दर्ज करता है और Continue पर क्लिक करता है, फिर पासवर्ड फ़ील्ड दिखाई देता है।
  • "Continue with {provider}" single sign-on बटन SSO कनेक्शन मौजूद होने पर स्वतः दिखाई देते हैं।
  • Forgot password और create account लिंक, जिनमें से प्रत्येक को दिखाया या छिपाया जा सकता है।
  • स्वचालित sign-in प्रयासों को रोकने के लिए वैकल्पिक Cloudflare Turnstile captcha।

पोर्टल admin में नियंत्रित

  • Branding लोगो, रंग, ऐप नाम, सपोर्ट ईमेल और कस्टम CSS सेट करती है।
  • forgot-password और registration लिंक दिखाएँ या छिपाएँ (Branding)।
  • SSO connections सोशल sign-in बटन जोड़ते हैं (SSO पेज)।
  • Session lifetime और lockout थ्रेशोल्ड (Settings → Security)।

रजिस्ट्रेशन

Account registration screen with first and last name fields, email, password, and a live password-policy checklist
  • पहला और अंतिम नाम (वैकल्पिक), ईमेल, और एक पासवर्ड एकत्र करता है।
  • उपयोगकर्ता के टाइप करते ही एक लाइव password-policy चेकलिस्ट अपडेट होती है, इसलिए सबमिट करने से पहले आवश्यकताएँ स्पष्ट होती हैं।
  • वैकल्पिक Cloudflare Turnstile captcha।
  • उन उपयोगकर्ताओं के लिए एक "Sign in" लिंक जिनके पास पहले से एक खाता है।

पोर्टल admin में नियंत्रित

  • registration लिंक दिखाएँ या छिपाएँ (Branding)।
  • आपके टेनेंट की password policy चेकलिस्ट को संचालित करती है।
  • Branding पूरी स्क्रीन को स्टाइल करती है।

पासवर्ड भूल गए

Forgot-password screen with an email field and a neutral check-your-email confirmation state
  • उपयोगकर्ता अपना ईमेल दर्ज करता है, फिर एक तटस्थ "check your email" पुष्टि देखता है।
  • स्क्रीन कभी प्रकट नहीं करती कि कोई खाता मौजूद है या नहीं, जो account-enumeration जाँच को विफल करती है।
  • एक "Back to sign in" लिंक उपयोगकर्ता को sign-in स्क्रीन पर लौटाता है।

पोर्टल admin में नियंत्रित

  • forgot-password लिंक दिखाएँ या छिपाएँ (Branding)।
  • आपके टेनेंट की email delivery रीसेट संदेश भेजती है।
  • Branding पूरी स्क्रीन को स्टाइल करती है।

पासवर्ड रीसेट करें

Reset-password screen with new and confirm password fields and a live per-rule requirement checklist
  • नया पासवर्ड और पासवर्ड पुष्टि करें फ़ील्ड एक लाइव प्रति-नियम आवश्यकता चेकलिस्ट के साथ।
  • जब रीसेट टोकन अब मान्य नहीं रहता तो एक स्पष्ट अमान्य या समाप्त लिंक स्थिति।
  • एक सफलता स्थिति जो पुष्टि करती है कि पासवर्ड बदल दिया गया है।

पोर्टल admin में नियंत्रित

  • आपके टेनेंट की password policy चेकलिस्ट को संचालित करती है।
  • Branding पूरी स्क्रीन को स्टाइल करती है।

MFA चैलेंज

MFA challenge screen with a method switcher, a six-digit authenticator code field, recovery-code entry, and a passkey button
  • authenticator app, passkey, और recovery code के बीच एक method switcher
  • एक 6-अंकीय TOTP फ़ील्ड जो सभी अंक दर्ज होते ही स्वतः सबमिट हो जाता है।
  • उन उपयोगकर्ताओं के लिए recovery-code प्रविष्टि जिन्होंने अपने authenticator तक पहुँच खो दी है।
  • हार्डवेयर-समर्थित सत्यापन के लिए एक passkey बटन।

पोर्टल admin में नियंत्रित

  • MFA policy प्रति एप्लिकेशन सेट की जाती है (Clients → Security)।
  • किसी भी enrolled factor वाले उपयोगकर्ता को नीति की परवाह किए बिना हमेशा चैलेंज किया जाता है

MFA सेटअप

MFA setup screen showing enrolled-method status, authenticator QR code and manual key, passkey enrolment, and recovery-code generation
  • enrolled methods की स्थिति दिखाता है ताकि उपयोगकर्ता जान सके कि क्या पहले से कॉन्फ़िगर है।
  • QR code के माध्यम से Authenticator सेटअप, एक मैनुअल key फ़ॉलबैक, और एक पुष्टि चरण।
  • हार्डवेयर-समर्थित प्रमाणीकरण के लिए Passkey एनरोलमेंट
  • खाता रिकवरी के लिए Recovery-code जनरेशन
  • जब MFA आवश्यक के बजाय स्वयं-सेवा हो तो एक वैकल्पिक skip

पोर्टल admin में नियंत्रित

  • MFA policy प्रति एप्लिकेशन सेट की जाती है; Required लॉगिन पर सेटअप को बाध्य करता है (Clients → Security)।
  • Branding पूरी स्क्रीन को स्टाइल करती है।

डिवाइस authorization

Device authorization screen with a centered user-code entry field, an Approve button, and an approved confirmation state
  • डिवाइस पर दिखाए गए कोड के लिए एक केंद्रित user-code प्रविष्टि फ़ील्ड।
  • डिवाइस को अधिकृत करने के लिए एक approve चरण।
  • जब उपयोगकर्ता अभी प्रमाणित नहीं हुआ है तो एक sign-in interstitial
  • डिवाइस अधिकृत होने के बाद एक approved पुष्टि

पोर्टल admin में नियंत्रित

  • एप्लिकेशन पर device-code grant सक्षम करें (Clients → Grant types)।
  • device-code lifetime सेट करें (Clients → Tokens)।
Consent screen showing the requesting application's logo and name, a per-scope permission list, and Allow and Deny buttons
  • अनुरोध करने वाले क्लाइंट का लोगो और नाम दिखाता है।
  • प्रत्येक अनुमति के लिए मित्रवत, मानव-पठनीय लेबल के साथ एक प्रति-स्कोप सूची
  • एक्सेस ग्रांट या अस्वीकार करने के लिए Allow और Deny बटन।
  • एक consent hint footer जो समझाता है कि निर्णय का क्या अर्थ है।

पोर्टल admin में नियंत्रित

  • प्रति एप्लिकेशन Require consent चालू करें (Clients → Security)।
  • लोगो, नाम और URL एप्लिकेशन के अपने मेटाडेटा से आते हैं।
  • Branding consent कार्ड को रंगती है।

कनेक्टेड ऐप्स (grants)

Connected apps screen listing the applications a user has authorized with their scopes and granted date, plus a revoke control
  • उपयोगकर्ता द्वारा अधिकृत प्रत्येक ऐप को उसके नाम, स्कोप और ग्रांट की तारीख के साथ सूचीबद्ध करता है।
  • किसी ऐप का एक्सेस Revoke करें, इसके प्रभावी होने से पहले एक पुष्टि चरण के साथ।
  • जब उपयोगकर्ता ने किसी ऐप को अधिकृत नहीं किया हो तो एक मित्रवत empty state

पोर्टल admin में नियंत्रित

  • सूची consent-required एप्लिकेशन द्वारा भरी जाती है।
  • Branding पूरी स्क्रीन को स्टाइल करती है।

खाता

/login/account पर एक होस्टेड स्वयं-सेवा खाता पेज जहाँ साइन-इन उपयोगकर्ता बिना किसी पोर्टल एक्सेस की आवश्यकता के अपनी प्रोफ़ाइल और पसंदीदा भाषा प्रबंधित करते हैं।

Self-service account screen with editable profile fields and a preferred Language selector
  • पहला और अंतिम नाम, कंपनी और फ़ोन संपादित करें; ईमेल पता केवल-पढ़ने के लिए दिखाया जाता है।
  • समर्थित locales में से एक पसंदीदा भाषा चुनें; UI तुरंत चयन का पूर्वावलोकन दिखाता है और सहेजने पर इसे बनाए रखता है।
  • सहेजी गई भाषा उपयोगकर्ता के होस्टेड UI और उन्हें प्राप्त होने वाले transactional ईमेल की भाषा को संचालित करती है।

पोर्टल admin में नियंत्रित

  • Branding पूरी स्क्रीन को स्टाइल करती है।
  • वही पसंदीदा भाषा पोर्टल के Users पेज पर एक admin द्वारा संपादन योग्य है।

प्रमाणीकरण प्रवाह

प्रमाणीकरण प्रवाह यह कवर करते हैं कि अंतिम उपयोगकर्ता आपके Authagonal टेनेंट के साथ कैसे इंटरैक्ट करते हैं — लॉगिन करना, रजिस्टर करना, पासवर्ड रीसेट करना और MFA सेट अप करना। इन एंडपॉइंट्स का उपयोग होस्टेड लॉगिन पेज द्वारा किया जाता है और यदि आप एक कस्टम लॉगिन UI बना रहे हैं तो इन्हें सीधे कॉल किया जा सकता है।

लॉगिन

POST /api/auth/login

ईमेल और पासवर्ड के साथ एक उपयोगकर्ता को प्रमाणित करता है। सफलता पर, एक session cookie साइन करता है और उपयोगकर्ता प्रोफ़ाइल लौटाता है। यदि MFA कॉन्फ़िगर है, तो प्रतिक्रिया इंगित करती है कि session पूरी तरह स्थापित होने से पहले एक second factor आवश्यक है।

अनुरोध बॉडी:

Login request
{
  "email": "[email protected]",
  "password": "correct-horse-battery-staple"
}

सफलता प्रतिक्रिया:

फ़ील्डप्रकारविवरण
userIdstringविशिष्ट उपयोगकर्ता पहचानकर्ता
emailstringउपयोगकर्ता ईमेल पता
namestringपूर्ण प्रदर्शन नाम
mfaAvailablebooleanक्या उपयोगकर्ता के पास MFA विधियाँ enrolled हैं

MFA required प्रतिक्रिया: जब उपयोगकर्ता के पास MFA enrolled होता है, तो प्रतिक्रिया में mfaRequired: true के साथ एक challengeId और उपलब्ध MFA विधियों को सूचीबद्ध करने वाला एक methods array शामिल होता है।

MFA setup required प्रतिक्रिया: जब टेनेंट को MFA की आवश्यकता होती है लेकिन उपयोगकर्ता ने अभी तक enroll नहीं किया है, तो प्रतिक्रिया में enrollment प्रवाह के लिए एक setupToken के साथ mfaSetupRequired: true शामिल होता है।

त्रुटि प्रतिक्रियाएँ:

त्रुटि कोडHTTP Statusविवरण
invalid_credentials401ईमेल या पासवर्ड गलत है
account_disabled403खाता एक admin द्वारा निष्क्रिय कर दिया गया है
email_not_confirmed403उपयोगकर्ता ने अपना ईमेल पता सत्यापित नहीं किया है
locked_out423खाता अस्थायी रूप से लॉक है (सेकंड में retryAfter शामिल है)
sso_required409ईमेल डोमेन में SSO कॉन्फ़िगर है (redirectUrl शामिल है)

SSO check: यदि उपयोगकर्ता के ईमेल डोमेन में एक SSO कनेक्शन कॉन्फ़िगर है, तो login endpoint एक redirectUrl के साथ sso_required लौटाता है। क्लाइंट को उपयोगकर्ता को SSO प्रदाता पर रीडायरेक्ट करना चाहिए।

Account lockout: maxFailedAttempts लगातार विफल लॉगिन प्रयासों के बाद, खाता lockoutDurationMinutes के लिए लॉक हो जाता है। दोनों मान टेनेंट सेटिंग्स में कॉन्फ़िगर करने योग्य हैं।

होस्टेड लॉगिन पेज

login endpoint को आमतौर पर होस्टेड लॉगिन पेज द्वारा कॉल किया जाता है, सीधे आपके एप्लिकेशन द्वारा नहीं। प्रमाणीकरण शुरू करने के लिए OIDC authorization code प्रवाह का उपयोग करें — आपके उपयोगकर्ता स्वतः होस्टेड लॉगिन पेज पर रीडायरेक्ट हो जाएँगे।

रजिस्ट्रेशन

POST /api/auth/register

एक नया उपयोगकर्ता खाता बनाता है। एक सत्यापन ईमेल स्वतः भेजा जाता है — उपयोगकर्ता को लॉगिन करने से पहले अपना ईमेल सत्यापित करना होगा।

अनुरोध बॉडी:

Registration request
{
  "email": "[email protected]",
  "password": "a-strong-password-here",
  "firstName": "Jane",
  "lastName": "Smith"
}
फ़ील्डआवश्यकविवरण
emailहाँईमेल पता (अद्वितीय होना चाहिए)
passwordहाँटेनेंट password policy को पूरा करना चाहिए
firstNameनहींपहला नाम
lastNameनहींअंतिम नाम

सफलता: नए खाते के userId के साथ 201 Created। पहले से लिए गए ईमेल के साथ रजिस्टर करने पर भी 201 लौटता है: हम कभी प्रकट नहीं करते कि कोई ईमेल मौजूद है या नहीं (account enumeration रोकने के लिए), और इसके बजाय वास्तविक खाताधारक को ईमेल द्वारा सूचित करते हैं।

त्रुटि प्रतिक्रियाएँ:

त्रुटि कोडHTTP Statusविवरण
weak_password400पासवर्ड टेनेंट password policy को पूरा नहीं करता
rate_limited429बहुत अधिक रजिस्ट्रेशन प्रयास
provisioning_rejected422एक provisioning webhook ने रजिस्ट्रेशन को अस्वीकार कर दिया

Password Policy

सबमिशन से पहले GET /api/auth/password-policy के माध्यम से टेनेंट की पासवर्ड आवश्यकताएँ जाँचें। यह न्यूनतम लंबाई, आवश्यक वर्ण वर्ग, और क्या breached password जाँच सक्षम है, लौटाता है।

पासवर्ड रीसेट

POST /api/auth/forgot-password

एक पासवर्ड रीसेट ईमेल का अनुरोध करता है। email enumeration रोकने के लिए, endpoint हमेशा एक सफलता प्रतिक्रिया लौटाता है, चाहे ईमेल मौजूद हो या नहीं।

Forgot password request
{
  "email": "[email protected]"
}

POST /api/auth/reset-password

ईमेल लिंक से टोकन का उपयोग करके उपयोगकर्ता का पासवर्ड रीसेट करता है।

Reset password request
{
  "token": "RESET_TOKEN_FROM_EMAIL",
  "newPassword": "new-strong-password"
}

एक सफल पासवर्ड रीसेट के दुष्प्रभाव:

  • विफल लॉगिन प्रयास काउंटर शून्य पर रीसेट हो जाता है
  • सभी मौजूदा refresh tokens रद्द कर दिए जाते हैं
  • एक नया security stamp जनरेट होता है (सभी मौजूदा sessions को अमान्य करते हुए)

MFA सेटअप और सत्यापन

Authagonal तीन MFA विधियों का समर्थन करता है: TOTP (authenticator apps), WebAuthn (security keys और biometrics), और एकल-उपयोग recovery codes।

TOTP सेटअप

POST /api/auth/mfa/totp/setup — एक QR code data URI और एक मैनुअल entry key लौटाता है। उपयोगकर्ता अपने authenticator app (Google Authenticator, Authy, 1Password, आदि) से QR code स्कैन करता है, फिर enrollment की पुष्टि करता है।

POST /api/auth/mfa/totp/confirm — authenticator app से एक 6-अंकीय कोड को मान्य करके TOTP enrollment की पुष्टि करता है।

Confirm TOTP enrollment
{
  "code": "123456"
}

WebAuthn सेटअप

POST /api/auth/mfa/webauthn/setup — WebAuthn API के लिए credential creation options लौटाता है। ब्राउज़र इन options के साथ navigator.credentials.create() कॉल करता है।

POST /api/auth/mfa/webauthn/confirm — ब्राउज़र से attestation प्रतिक्रिया सबमिट करके WebAuthn enrollment की पुष्टि करता है।

Recovery Codes

POST /api/auth/mfa/recovery/generate — 10 एकल-उपयोग 8-वर्ण recovery codes जनरेट करता है। प्रत्येक कोड MFA को बायपास करने के लिए ठीक एक बार उपयोग किया जा सकता है।

Recovery Codes केवल एक बार दिखाए जाते हैं

Recovery codes केवल जनरेशन के समय प्रदर्शित होते हैं और बाद में पुनर्प्राप्त नहीं किए जा सकते। यदि कोई उपयोगकर्ता अपना authenticator डिवाइस और अपने recovery codes दोनों खो देता है, तो उनके फिर से लॉगिन कर पाने से पहले एक admin को पोर्टल से उनका MFA credential मैन्युअल रूप से हटाना होगा।

MFA सत्यापन

POST /api/auth/mfa/verify — एक सफल पासवर्ड लॉगिन के बाद MFA चैलेंज पूरा करता है।

फ़ील्डआवश्यकविवरण
challengeIdहाँlogin प्रतिक्रिया से challenge ID
methodहाँ"totp", "recovery", या "webauthn"
codeTOTP / Recovery6-अंकीय TOTP कोड या 8-वर्ण recovery कोड
assertionWebAuthnnavigator.credentials.get() से assertion प्रतिक्रिया

MFA स्थिति

GET /api/auth/mfa/status — उपयोगकर्ता की वर्तमान में enrolled MFA विधियाँ लौटाता है।

SSO लॉगिन प्रवाह

Authagonal SAML 2.0 और OIDC-आधारित दोनों SSO कनेक्शन का समर्थन करता है। Domain-आधारित routing स्वतः पता लगाता है कि उपयोगकर्ता के ईमेल पते के आधार पर किस SSO प्रदाता का उपयोग करना है।

SSO Check

GET /api/auth/[email protected]

फ़ील्डप्रकारविवरण
ssoRequiredbooleanक्या ईमेल डोमेन को SSO की आवश्यकता है
providerTypestring"saml" या "oidc"
connectionIdstringSSO कनेक्शन पहचानकर्ता
redirectUrlstringSSO लॉगिन के लिए उपयोगकर्ता को रीडायरेक्ट करने का URL

SAML प्रवाह

उपयोगकर्ता को GET /saml/{connectionId}/login पर रीडायरेक्ट किया जाता है जो identity provider को एक SAML AuthnRequest भेजता है। IdP उपयोगकर्ता को प्रमाणित करता है और एक SAML प्रतिक्रिया वापस Assertion Consumer Service (ACS) endpoint पर पोस्ट करता है। Authagonal assertion को मान्य करता है, उपयोगकर्ता बनाता या अपडेट करता है, और एक session cookie साइन करता है।

आपके IdP को कॉन्फ़िगर करने के लिए SAML metadata GET /saml/{connectionId}/metadata पर उपलब्ध है।

OIDC प्रवाह

उपयोगकर्ता को GET /oidc/{connectionId}/login पर रीडायरेक्ट किया जाता है जो PKCE के साथ upstream identity provider पर रीडायरेक्ट करता है। उपयोगकर्ता के प्रमाणित होने के बाद, /oidc/callback पर callback authorization code का आदान-प्रदान करता है, ID token को मान्य करता है, और उपयोगकर्ता बनाता या अपडेट करता है।

JIT Provisioning: SAML और OIDC दोनों प्रवाह just-in-time provisioning का समर्थन करते हैं। यदि उपयोगकर्ता टेनेंट में पहले से मौजूद नहीं है, तो उन्हें identity provider के claims से स्वतः बनाया जाता है। यदि वे मौजूद हैं, तो उनकी प्रोफ़ाइल विशेषताएँ प्रदाता से नवीनतम मानों से मेल खाने के लिए अपडेट की जाती हैं।

Domain-आधारित Routing

Domain-आधारित routing का मतलब है कि आपके उपयोगकर्ताओं को यह जानने की आवश्यकता नहीं है कि वे किस SSO प्रदाता का उपयोग करते हैं। उनका ईमेल पता दर्ज करना पर्याप्त है — Authagonal डोमेन को सही SSO कनेक्शन से मिलाता है और स्वतः रीडायरेक्ट करता है।

एक कस्टम लॉगिन UI बनाएँ

Authagonal की होस्टेड login, registration, password-reset और MFA स्क्रीन को अपने स्वयं के UI से बदलें, जबकि Authagonal प्रमाणीकरण, MFA, SSO, sessions और टोकन जारी करना संभालता रहे। दो मार्ग: हमारी React component library का उपयोग करें, या किसी भी framework से सीधे auth API कॉल करें। यह opt-in है — पहले टेनेंट सेटिंग्स में Custom login UI सक्षम करें।

A fully customized hosted login page with a tenant logo, brand color, and support email in the footer

पूर्वापेक्षा: आपके root पर एक कस्टम डोमेन

login session एक first-party cookie है, इसलिए आपके UI और Authagonal auth server को एक registrable डोमेन साझा करना होगा। एक कस्टम auth डोमेन को उसी root पर Authagonal की ओर इंगित करें जिस पर आपका ऐप चलता है — उदा. auth login.acme.com पर, ऐप app.acme.com पर। Custom login UI सेटिंग तब तक अक्षम रहती है जब तक एक सक्रिय कस्टम डोमेन मौजूद न हो।

आपका UIAuth hostकाम करता है?
app.acme.comlogin.acme.com✅ वही root
acme.comauth.acme.com✅ वही root
app.acme.comacme.authagonal.io❌ cross-site
myapp.iologin.acme.com❌ cross-site

एक कस्टम डोमेन क्यों आवश्यक है

एक cross-site session cookie एक third-party cookie होगी — जिसे ब्राउज़र (Safari, Chrome) चरणबद्ध रूप से समाप्त कर रहे हैं। auth को अपने स्वयं के root पर रखने से cookie first-party और भविष्य-सुरक्षित बन जाती है, और यही वह है जो प्लेटफ़ॉर्म लागू करता है: cross-origin auth कॉल केवल उसी origin से सम्मानित होते हैं जो auth host के root डोमेन को साझा करता है।

अपने UI के origin (उदा. https://app.acme.com) को अपने OAuth क्लाइंट के Allowed CORS origins में भी जोड़ें — वही सूची जो आपने token exchange के लिए सेट की थी।

React: @authagonal/login

npm i @authagonal/login auth logic और UI को एक पैकेज के रूप में भेजता है — वही जिस पर Authagonal का होस्टेड login बना है। अपनी altitude चुनें:

  • पूर्ण ऐपApp को drop in करें और इसे branding के माध्यम से theme करें।
  • पेज compose करें — अपने स्वयं के layout के अंदर LoginPage, MfaChallengePage, ResetPasswordPage… का उपयोग करें।
  • Primitives + logicAuthLayout/Button/Input और API client (login, mfaVerify, forgotPassword, …) के साथ अपनी स्वयं की स्क्रीन बनाएँ।
@authagonal/login API का उपयोग करने वाली एक कस्टम स्क्रीन
import { AuthLayout, Input, Button, login, ApiRequestError } from '@authagonal/login';

function MyLogin() {
  async function onSubmit(email: string, password: string) {
    try {
      const res = await login({ email, password });        // POST /login (sets the session cookie)
      if (res.mfaRequired) {/* render your MFA step → mfaVerify(...) */}
      else window.location.href = res.returnUrl;            // hand off to /connect/authorize
    } catch (e) {
      if (e instanceof ApiRequestError) {/* show e.message */}
    }
  }
  return <AuthLayout>{/* your own markup + <Input/> <Button/> */}</AuthLayout>;
}

कोई भी framework: auth API कॉल करें

React पर नहीं हैं? सीधे auth-flow एंडपॉइंट्स (/api/auth के अंतर्गत) कॉल करें, फिर मानक OIDC /connect/authorize प्रवाह को सौंप दें। credentials: 'include' भेजें ताकि session cookie संग्रहीत हो।

एंडपॉइंटउद्देश्य
POST /api/auth/loginप्रमाणित करें; mfaRequired या एक return URL लौटाता है
POST /api/auth/registerस्वयं-सेवा रजिस्ट्रेशन (जब सक्षम हो)
POST /api/auth/forgot-passwordएक पासवर्ड रीसेट शुरू करें
POST /api/auth/reset-passwordएक पासवर्ड रीसेट पूरा करें
GET /api/auth/password-policyPassword policy (नियमों को render करने के लिए)
POST /api/auth/mfa/*MFA सेटअप + सत्यापन (TOTP, WebAuthn, recovery)

credentials: 'include' का उपयोग करें

session एक cookie है, इसलिए आपके fetches को credentials भेजने होंगे। Cross-origin कॉल केवल तभी सफल होते हैं जब Custom login UI सक्षम हो और आपका origin auth host के root डोमेन को साझा करता हो — अन्यथा वे 403 के साथ अस्वीकार कर दिए जाते हैं।
प्रमाणित करें, फिर OIDC को सौंप दें
# 1. Authenticate (browser fetch — credentials:'include' so the session cookie is stored)
curl -i -X POST https://login.acme.com/api/auth/login \
  -H "Content-Type: application/json" \
  -H "Origin: https://app.acme.com" \
  --data '{"email":"[email protected]","password":"..."}'
# (handle {"mfaRequired":true} → POST /api/auth/mfa/verify, then continue)

# 2. Hand off to the OAuth flow — top-level navigation to the authorize endpoint with PKCE:
# https://login.acme.com/connect/authorize?client_id=my-app&redirect_uri=...&response_type=code
#   &scope=openid%20profile%20email&code_challenge=...&code_challenge_method=S256
# The session cookie (same-site) authenticates the user; you get back a code → exchange at /connect/token.

प्लान और सीमाएँ

Authagonal चार प्लान स्तर प्रदान करता है। सभी प्लान में सभी सुविधाएँ शामिल हैं — एकमात्र अंतर Monthly Active User (MAU) सीमा और ओवरेज मूल्य निर्धारण है।

प्लान स्तर

प्लानMAU सीमाओवरेजओवरेज लागत/उपयोगकर्ता
Starter1,000नहीं
Pro5,000हाँ$0.04/उपयोगकर्ता
Scale25,000हाँ$0.025/उपयोगकर्ता
Enterprise100,000हाँ$0.015/उपयोगकर्ता

Monthly Active Users (MAU)

Monthly Active User कोई भी अद्वितीय उपयोगकर्ता है जो किसी बिलिंग माह के दौरान कम से कम एक बार सफलतापूर्वक प्रमाणित होता है। SCIM के माध्यम से प्रोविज़न किए गए लेकिन लॉग इन न करने वाले उपयोगकर्ता आपके MAU कुल में नहीं गिने जाते।

ओवरेज — यदि आपका प्लान ओवरेज का समर्थन करता है, तो MAU सीमा से अधिक उपयोगकर्ताओं को ऊपर दी गई प्लान तालिका में दिखाई गई प्रति-उपयोगकर्ता दर पर बिल किया जाता है। आप बिलिंग अवधि के लिए अपने अधिकतम व्यय को सीमित करने हेतु एक ओवरेज cap सेट कर सकते हैं।

प्रवर्तन — यदि आपका प्लान ओवरेज का समर्थन नहीं करता (Starter), तो MAU सीमा से अधिक उपयोगकर्ता अगली बिलिंग अवधि तक या जब तक आप ओवरेज का समर्थन करने वाले प्लान में अपग्रेड नहीं करते, लॉग इन नहीं कर सकते।

हर प्लान पर पूर्ण फ़ीचर सेट

सभी प्लान में पूर्ण फ़ीचर सेट शामिल है — SSO, SCIM, MFA, कस्टम डोमेन, ब्रांडिंग, webhooks, ऑडिट लॉग, और पोर्टल।