તમારી ઍપ માટે આઇડેન્ટિટી, ઓપન સ્ટાન્ડર્ડ પર
તમને અંદર લઈ જાય છે.
એક એકાઉન્ટ. દરેક દરવાજો.
Usher Identity લોકોને OpenID Connect અને OAuth 2.1 વડે તમારી ઍપમાં સાઇન ઇન કરાવે છે: પાસકી, કોડ, સોશિયલ સાઇન-ઇન અને સંસ્થાઓ, અને દરેક એન્વાયર્નમેન્ટ બીજા દરેકથી અલગ રહે છે.
શરૂઆત મફત. તમારા પોતાના સર્વર પર પણ ચાલે છે.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
લૉબી
એવું સાઇન‑ઇન પેજ જે સવાલ-જવાબ નહીં, આવકાર આપે છે.
લૉબી એ સાઇન-ઇન પેજ છે જે Usher Identity તમારી ઍપ માટે હોસ્ટ કરે છે. તે હંમેશાં જણાવે છે કે વ્યક્તિ ક્યાં જઈ રહી છે, અને કોઈ પણ ઍપે મોકલ્યા હોય, તે એકસરખી દેખાય છે, જેથી લોકો તેના પર ભરોસો કરતાં શીખે.
- તમે જે પ્રોડક્ટમાં જઈ રહ્યા છો તેનું નામ દર વખતે બતાવે છે.
- પાસકી, ઇમેઇલથી મોકલેલા કોડ અને મૅજિક લિંક, અને તમે ઇચ્છો તો જ પાસવર્ડ.
- દરેક પ્રોડક્ટમાં એ જ શાંત પેજ, લાઇટ કે ડાર્ક.
આ લૉબીની ચાલતી નકલ છે. તે આ પેજમાં જ ચાલે છે, કંઈ મોકલતી નથી, અને કોઈને સાઇન ઇન કરાવતી નથી.
સ્ટાન્ડર્ડ, લૉક-ઇન નહીં
તમારો સ્ટૅક પહેલેથી જાણે છે તે પ્રોટોકૉલ બોલે છે.
Usher Identity સૌથી પહેલાં એક OpenID Connect પ્રોવાઇડર છે. અનુકૂળ હોય ત્યારે અમારું SDK વાપરો, અથવા કોઈ પણ ભાષામાં કોઈ પણ OIDC લાઇબ્રેરી. જો તમે ક્યારેય છોડી જાઓ, તો તમારી ઍપને લોકોને સાઇન ઇન કરાવવાની રીત બદલવી પડતી નથી.
- OIDC Core · Discovery
OpenID Connect
દરેક એન્વાયર્નમેન્ટ માટે એક ડિસ્કવરી ડૉક્યુમેન્ટ, ID ટોકન અને userinfo. કોઈ પણ સર્ટિફાઇડ ક્લાયન્ટ લાઇબ્રેરી કામ કરે છે.
- ફક્ત S256
PKCE સાથે OAuth 2.1
દરેક ક્લાયન્ટ માટે, પબ્લિક હોય કે કૉન્ફિડેન્શિયલ, PKCE સાથે ઑથોરાઇઝેશન કોડ. કોઈ implicit ફ્લો નહીં, ટોકન એન્ડપૉઇન્ટમાં કોઈ પાસવર્ડ નહીં.
- RS256 · ES256 · EdDSA
JWKS અને કી રોટેશન
દરેક એન્વાયર્નમેન્ટ પોતાની કી વડે સાઇન કરે છે, જે તેના jwks_uri પર પ્રકાશિત થાય છે. સાઇન ઇન થયેલા લોકોને ખલેલ પહોંચાડ્યા વિના તેને રોટેટ કરો.
- RFC 7662 · RFC 7009
ઇન્ટ્રોસ્પેક્શન અને રિવોકેશન
પૂછો કે ટોકન હજુ માન્ય છે કે નહીં, અથવા તેને હમણાં જ પૂરું કરો. Usher Identity દરેક વિનંતી પર પોતાનાં સેશન તપાસે છે, તેથી સેશન પૂરું કરવાની અસર તરત થાય છે.
RP-initiated અને back-channel લૉગઆઉટ
તમારી ઍપમાંથી સાઇન આઉટ કરો, અથવા જ્યાં પણ સેશન પૂરું થાય ત્યારે Usher Identity દરેક ઍપને જણાવે.
- RFC 9449
DPoP
ટોકનને ક્લાયન્ટ પાસેની કી સાથે બાંધો, જેથી ચોરાયેલું ટોકન એકલું કોઈ કામનું ન રહે.
- WebAuthn
પાસકી
પૂરા દરજ્જાની સુવિધા, ઍડ-ઑન નહીં. લોકો આંગળીની છાપ, ચહેરા અથવા સિક્યોરિટી કી વડે સાઇન ઇન કરે છે, અને ફિશ કરવા જેવું કંઈ રહેતું નથી.
- TOTP
ઑથેન્ટિકેટર ઍપ
કોઈ પણ ઑથેન્ટિકેટરના સમય-આધારિત કોડ, બૅકઅપ કોડ સાથે. બીજું ફૅક્ટર વૈકલ્પિક કે ફરજિયાત બનાવો.
મૅજિક લિંક
ઇનબૉક્સમાંથી એક ટૅપ. ટૂંકા સમય માટે માન્ય, એક જ વાર વાપરી શકાય, અને તેને મોકલનાર એન્વાયર્નમેન્ટ સાથે બંધાયેલી.
ઇમેઇલ કોડ
છ અંક, એવા લોકો માટે જે એક ડિવાઇસ પર સાઇન ઇન કરે છે અને બીજા પર ઇમેઇલ વાંચે છે.
સોશિયલ સાઇન-ઇન
Google, GitHub, Microsoft અને Apple. એકાઉન્ટ ત્યારે જ લિંક થાય છે જ્યારે તેનો ઇમેઇલ સાબિત થયો હોય.
સંસ્થાઓ અને ટીમો
તમારી ઍપ વાપરતા વ્યવસાયો માટે સભ્યો, ભૂમિકાઓ અને આમંત્રણો.
- જલદી આવી રહ્યું છે
SAML
તમારા ગ્રાહકોના વર્કફોર્સ આઇડેન્ટિટી પ્રોવાઇડર સાથે સિંગલ સાઇન-ઑન.
- જલદી આવી રહ્યું છે
SCIM
તમારા ગ્રાહકોની ડિરેક્ટરીમાંથી પ્રોવિઝનિંગ અને ડીપ્રોવિઝનિંગ.
સાઇન-ઇન કેવી રીતે કામ કરે છે
પાંચ પગલાં, દરેક સ્ટાન્ડર્ડ.
આ OpenID Connect નો PKCE સાથેનો ઑથોરાઇઝેશન કોડ ફ્લો છે, એ જ ફ્લો જે દરેક ગંભીર આઇડેન્ટિટી પ્રોવાઇડર બોલે છે. સ્ક્રોલ કરીને જુઓ.
- 01
તમારી ઍપ તેમને લૉબી પર મોકલે છે.
કોઈ Usher Identity વડે આગળ વધો પસંદ કરે, ત્યારે તમારી ઍપ તેમને તમારા એન્વાયર્નમેન્ટના ઑથોરાઇઝેશન એન્ડપૉઇન્ટ પર રીડાયરેક્ટ કરે છે, એક PKCE ચૅલેન્જ અને એક state વૅલ્યૂ સાથે, જે તે પછીથી તપાસશે.
GET acme.usherid.com/api/auth/oauth2/authorize ?response_type=code &client_id=acme_web &redirect_uri=https://app.acme.example/callback &scope=openid profile email offline_access &state=k3Jx… &code_challenge=E9Mel…cM &code_challenge_method=S256
- 02
તેઓ પોતાની રીતે સાઇન ઇન કરે છે.
પાસકી, ઇમેઇલથી મોકલેલો કોડ, મૅજિક લિંક, સોશિયલ એકાઉન્ટ અથવા પાસવર્ડ: લૉબી ફક્ત એ જ આપે છે જેની તમારું એન્વાયર્નમેન્ટ મંજૂરી આપે છે, અને હંમેશાં જણાવે છે કે તેઓ કઈ ઍપમાં જઈ રહ્યા છે.
Usher IdentityUsher IdentityAcme પર આગળ જઈ રહ્યા છોફરી સ્વાગત છે.
પાસકી વાપરોમને ઇમેઇલથી કોડ મોકલો - 03
તેઓ શૅર કરવા સંમત થાય છે.
પહેલી વાર, લોકો જુએ છે કે તમારી ઍપ શું માંગે છે (તેમની પ્રોફાઇલ, તેમનો ઇમેઇલ, સાઇન ઇન રહેવું) અને એક વાર સંમતિ આપે છે.
Acme આ કરવા માંગે છે:
- તમારું નામ અને ફોટો જોવું
- તમારું ઇમેઇલ સરનામું જોવું
- તમને સાઇન ઇન રાખવા
રદ કરોમંજૂરી આપો - 04
Usher Identity એક કોડ પાછો આપે છે.
બ્રાઉઝર તમારા રીડાયરેક્ટ URI પર પાછું આવે છે, પાંચ મિનિટ ચાલતા એક જ વાર વાપરી શકાય તેવા કોડ સાથે, અને તમે મોકલેલી state સાથે, જે તમારી ઍપ તપાસે છે.
302 Found Location: https://app.acme.example/callback ?code=SplxlOBeZQQYbYS6WxSbIA &state=k3Jx…
- 05
તમારી ઍપ તેના બદલામાં ટોકન લે છે.
તમારું સર્વર કોડ અને PKCE વેરિફાયર ટોકન એન્ડપૉઇન્ટ પર મોકલે છે. બદલામાં આવે છે: તેઓ કોણ છે તે જણાવતું ID ટોકન, તમારા API માટે ઍક્સેસ ટોકન, અને સાઇન ઇન રહેવા માટે રિફ્રેશ ટોકન.
POST acme.usherid.com/api/auth/oauth2/token grant_type=authorization_code&code=Splx… &code_verifier=dBjftJeZ4CVP… { "token_type": "Bearer", "access_token": "eyJhbGciOiJSUzI1NiIs…", "id_token": "eyJhbGciOiJSUzI1NiIs…", "refresh_token": "8xLOxBtZp8…", "expires_in": 600 }
રચનાથી જ અલગ
દરેક એન્વાયર્નમેન્ટ પોતાની અલગ ઇમારત છે.
તમારાં પ્રોડક્શન અને ડેવલપમેન્ટ એન્વાયર્નમેન્ટ, અને બીજા દરેક ગ્રાહકનાં પણ, મહત્ત્વનું કંઈ પણ શૅર કરતાં નથી. એકમાં થયેલી ભૂલ બીજાને વાંચી શકતી નથી, તેના નામે સાઇન કરી શકતી નથી કે તેમાં સાઇન ઇન કરી શકતી નથી.
- પોતાનો Postgres સ્કીમા
- શૅર કરેલા ટેબલમાં ટેનન્ટ કૉલમ નહીં: એન્વાયર્નમેન્ટ માટે બનાવેલો સ્કીમા, અને તેમાં બીજું કંઈ નહીં.
- પોતાની સાઇનિંગ કી
- એક એન્વાયર્નમેન્ટના ટોકન ક્યારેય બીજાની કી સામે ચકાસાઈ શકતા નથી.
- પોતાનાં સીલ કરેલાં સીક્રેટ
- એન્વાયર્નમેન્ટની પોતાની ડેટા કી વડે સીલ કરેલાં, અને એ કી પોતે માસ્ટર કી વડે વીંટાળેલી હોય છે.
- પોતાનો હોસ્ટ
- ઇશ્યુઅર Usher ની સાઇટ અને Console થી અલગ ડોમેન પર હોય છે, હોસ્ટ-ઓન્લી કૂકી સાથે.
usheridentity.com
સાઇટ, Usher Identity Console, Usher Identity એકાઉન્ટ
*.usherid.com
દરેક એન્વાયર્નમેન્ટ માટે એક ઇશ્યુઅર, અલગ ડોમેન પર
યુઝર, સેશન અને ટોકન આ એન્વાયર્નમેન્ટ માટે બનાવેલા સ્કીમામાં રહે છે. ક્વેરી એ જ સ્કીમા સામે ચાલે છે, ટેનન્ટ કૉલમવાળા શૅર કરેલા ટેબલ સામે ક્યારેય નહીં.
Acme પ્રોડક્શન નું સીલ કરેલું Google ક્લાયન્ટ સીક્રેટ Northwind પ્રોડક્શન માં કૉપિ કરો.
ડેવલપર માટે
તમારું પહેલું સાઇન‑ઇન, ત્રણ રીતે.
SDK આવે ત્યારે તે ઉમેરો, તમે પહેલેથી ભરોસો કરો છો તે OIDC લાઇબ્રેરી વાપરો, અથવા ડિસ્કવરી ડૉક્યુમેન્ટ વાંચીને શરૂઆત કરો. અંદરથી બધું એક જ પ્રોટોકૉલ છે.
// app/layout.tsx
import { UsherProvider } from '@usher/nextjs'
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<UsherProvider>{children}</UsherProvider>
</body>
</html>
)
}
// app/page.tsx
import { SignIn, UserButton, currentUser } from '@usher/nextjs'
export default async function Page() {
const user = await currentUser()
return user ? <UserButton /> : <SignIn />
}જાતે ચલાવો
તમારા સર્વર, તમારી કી.
Usher Identity ને સેવા તરીકે વાપરો, અથવા એ જ પ્લેટફોર્મ તમારા પોતાના સર્વર પર, તમારી પોતાની કી અને તમારા પોતાના ડેટાબેઝ સાથે ચલાવો.
Docker
એક Compose ફાઇલ: ઍપ, Postgres, Valkey, Caddy એજ અને ઇગ્રેસ પ્રૉક્સી. કન્ટેનર કોઈ નવા વિશેષાધિકાર વિના અને કેપેબિલિટી હટાવીને ચાલે છે.
Ubuntu
એક સાદું Ubuntu સર્વર પૂરતું છે. Caddy TLS ટર્મિનેટ કરે છે, અને સીક્રેટ કન્ટેનરને ફાઇલ તરીકે અપાય છે, ઇમેજમાં ક્યારેય બેક કરાતાં નથી.
Postgres
Postgres બધું રાખે છે, દરેક એન્વાયર્નમેન્ટ માટે એક સ્કીમા. તે અને Valkey એવા નેટવર્ક પર છે જ્યાંથી ઇન્ટરનેટ સુધી કોઈ રસ્તો નથી.
# on an Ubuntu server with Docker Engine and the Compose plugin
bash infra/scripts/setup-env.sh --prod \
--domain usher.example --tenant-domain usherid.example
docker compose -f compose.yaml -f compose.prod.yaml \
--profile core --profile apps --profile edge up -d --wait
pnpm db:migrate # applies the database migrationsસેલ્ફ-હોસ્ટિંગની પૂરી માર્ગદર્શિકા આવી રહી છે. ઉપરના કમાન્ડ તેની રૂપરેખા છે.
તમારા યુઝરને અંદર લઈ જાઓ.
એક વર્કસ્પેસ અને એક પ્રોજેક્ટ બનાવો, અને તમારું પહેલું એન્વાયર્નમેન્ટ પોતાના ઇશ્યુઅર, પોતાની કી અને પોતાની લૉબી સાથે આવે છે.
એક વાર સાઇન ઇન કરો. બધે આવકાર.