మీ యాప్ల కోసం ఐడెంటిటీ, ఓపెన్ స్టాండర్డ్లపై
మిమ్మల్ని లోపలికి తీసుకెళ్తుంది.
ఒకే ఖాతా. ప్రతి తలుపు.
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తో ఆథరైజేషన్ కోడ్. ఇంప్లిసిట్ ఫ్లో లేదు, టోకెన్ ఎండ్పాయింట్లో పాస్వర్డ్లు లేవు.
- RS256 · ES256 · EdDSA
JWKS, కీ రొటేషన్
ప్రతి ఎన్విరాన్మెంట్ దాని jwks_uriలో ప్రచురించిన సొంత కీలతో సైన్ చేస్తుంది. సైన్ ఇన్ అయి ఉన్నవారికి అంతరాయం కలగకుండా వాటిని రొటేట్ చేయండి.
- RFC 7662 · RFC 7009
ఇంట్రోస్పెక్షన్, రివొకేషన్
టోకెన్ ఇంకా చెల్లుతుందా అని అడగండి, లేదా దాన్ని ఇప్పుడే ముగించండి. Usher Identity ప్రతి అభ్యర్థనపైనా తన సొంత సెషన్లను తనిఖీ చేస్తుంది, కాబట్టి సెషన్ను ముగిస్తే అది వెంటనే అమలవుతుంది.
RP-initiated, బ్యాక్-ఛానల్ లాగ్అవుట్
మీ యాప్ నుండి సైన్ అవుట్ చేయండి, లేదా ఎక్కడైనా సెషన్ ముగిసినప్పుడు ప్రతి యాప్కూ Usher Identity తెలియజేసేలా చేయండి.
- RFC 9449
DPoP
క్లయింట్ దగ్గర ఉన్న కీకి టోకెన్లను బంధించండి, తద్వారా దొంగిలించబడిన టోకెన్ దానంతట అదే పనికిరాదు.
- WebAuthn
పాస్కీలు
అదనపు జోడింపు కాదు, ప్రధాన సౌకర్యం. వ్యక్తులు వేలిముద్రతో, ముఖంతో లేదా సెక్యూరిటీ కీతో సైన్ ఇన్ చేస్తారు, ఫిషింగ్ చేయడానికి ఏమీ ఉండదు.
- TOTP
అథెంటికేటర్ యాప్లు
ఏ అథెంటికేటర్ నుండైనా సమయం ఆధారిత కోడ్లు, బ్యాకప్ కోడ్లతో. రెండవ ఫ్యాక్టర్ను ఐచ్ఛికంగా లేదా తప్పనిసరిగా చేయండి.
మ్యాజిక్ లింక్లు
ఇన్బాక్స్ నుండి ఒక్క నొక్కు. కొద్దిసేపే చెల్లుతాయి, ఒక్కసారే వాడవచ్చు, వాటిని పంపిన ఎన్విరాన్మెంట్కు బంధించబడి ఉంటాయి.
ఇమెయిల్ కోడ్లు
ఒక పరికరంలో సైన్ ఇన్ చేసి, వేరే పరికరంలో ఇమెయిల్ చదివేవారి కోసం ఆరు అంకెలు.
సోషల్ సైన్-ఇన్
Google, GitHub, Microsoft, Apple. ఖాతా ఇమెయిల్ నిరూపించబడినప్పుడు మాత్రమే అది లింక్ చేయబడుతుంది.
సంస్థలు, బృందాలు
మీ యాప్ను ఉపయోగించే వ్యాపారాల కోసం సభ్యులు, పాత్రలు, ఆహ్వానాలు.
- త్వరలో వస్తోంది
SAML
మీ కస్టమర్ల ఉద్యోగుల ఐడెంటిటీ ప్రొవైడర్లతో సింగిల్ సైన్-ఆన్.
- త్వరలో వస్తోంది
SCIM
మీ కస్టమర్ల డైరెక్టరీల నుండి ఖాతాల ప్రొవిజనింగ్, డిప్రొవిజనింగ్.
సైన్-ఇన్ ఎలా పనిచేస్తుంది
ఐదు దశలు, ప్రతి ఒక్కటీ ప్రామాణికమైనదే.
ఇది PKCEతో OpenID Connect ఆథరైజేషన్ కోడ్ ఫ్లో, ప్రతి గంభీరమైన ఐడెంటిటీ ప్రొవైడర్ మాట్లాడే అదే ఫ్లో. దాని గుండా స్క్రోల్ చేయండి.
- 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 ఒక కోడ్ను తిరిగి ఇస్తుంది.
బ్రౌజర్ ఐదు నిమిషాలు చెల్లే, ఒక్కసారే వాడగల కోడ్తో, మీరు పంపిన stateతో మీ రీడైరెక్ట్ URIకు తిరిగి వస్తుంది, మీ యాప్ దాన్ని తనిఖీ చేస్తుంది.
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పూర్తి సెల్ఫ్-హోస్టింగ్ గైడ్ త్వరలో వస్తోంది. పైన ఉన్న కమాండ్లు దాని రూపురేఖలు.
మీ వినియోగదారులను లోపలికి తీసుకెళ్లండి.
ఒక వర్క్స్పేస్, ఒక ప్రాజెక్ట్ సృష్టించండి. మీ మొదటి ఎన్విరాన్మెంట్ దాని సొంత ఇష్యూయర్, కీలు, లాబీతో వస్తుంది.
ఒకసారి సైన్ ఇన్ చేయండి. ప్రతిచోటా స్వాగతం.