Ταυτότητα για τις εφαρμογές σας, σε ανοιχτά πρότυπα
Σας οδηγεί μέσα.
Ένας λογαριασμός. Κάθε πόρτα.
Το Usher Identity συνδέει τους χρήστες στις εφαρμογές σας με OpenID Connect και OAuth 2.1: κλειδιά πρόσβασης, κωδικοί, σύνδεση μέσω κοινωνικών δικτύων και οργανισμοί, με κάθε περιβάλλον χωριστά από κάθε άλλο.
Δωρεάν για να ξεκινήσετε. Εκτελείται και στους δικούς σας διακομιστές.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
Το Lobby
Μια σελίδα σύνδεσης που καλωσορίζει, δεν ανακρίνει.
Το Lobby είναι η σελίδα σύνδεσης που φιλοξενεί το Usher Identity για την εφαρμογή σας. Λέει πάντα πού πηγαίνει ο χρήστης και φαίνεται ίδιο όποια εφαρμογή κι αν τον έστειλε, ώστε οι χρήστες να μαθαίνουν να το εμπιστεύονται.
- Ονομάζει το προϊόν στο οποίο πηγαίνετε, κάθε φορά.
- Κλειδιά πρόσβασης, κωδικοί μέσω email και μαγικοί σύνδεσμοι, με συνθηματικά μόνο αν τα θέλετε.
- Η ίδια ήρεμη σελίδα, ανοιχτόχρωμη ή σκουρόχρωμη, σε κάθε προϊόν.
Αυτό είναι ένα λειτουργικό αντίγραφο του Lobby. Εκτελείται σε αυτή τη σελίδα, δεν στέλνει τίποτα και δεν συνδέει κανέναν.
Πρότυπα, όχι δέσμευση
Μιλά τα πρωτόκολλα που ήδη ξέρει η στοίβα σας.
Το Usher Identity είναι πρώτα απ’ όλα πάροχος OpenID Connect. Χρησιμοποιήστε το SDK μας όταν σας βολεύει, ή οποιαδήποτε βιβλιοθήκη OIDC σε οποιαδήποτε γλώσσα. Αν φύγετε ποτέ, οι εφαρμογές σας δεν χρειάζεται να αλλάξουν τον τρόπο που συνδέουν τους χρήστες.
- OIDC Core · Discovery
OpenID Connect
Ένα έγγραφο ανακάλυψης ανά περιβάλλον, διακριτικά αναγνωριστικού και userinfo. Λειτουργεί οποιαδήποτε πιστοποιημένη βιβλιοθήκη πελάτη.
- Μόνο S256
OAuth 2.1 με PKCE
Κωδικός εξουσιοδότησης με PKCE για κάθε πελάτη, δημόσιο ή εμπιστευτικό. Χωρίς σιωπηρή ροή, χωρίς συνθηματικά στο τελικό σημείο διακριτικών.
- RS256 · ES256 · EdDSA
JWKS και εναλλαγή κλειδιών
Κάθε περιβάλλον υπογράφει με τα δικά του κλειδιά, δημοσιευμένα στο jwks_uri του. Εναλλάξτε τα χωρίς να αποσυνδέσετε κανέναν.
- RFC 7662 · RFC 7009
Ενδοσκόπηση και ανάκληση
Ρωτήστε αν ένα διακριτικό ισχύει ακόμη, ή τερματίστε το τώρα. Το Usher Identity ελέγχει τις δικές του περιόδους σύνδεσης σε κάθε αίτημα, οπότε ο τερματισμός μιας περιόδου ισχύει αμέσως.
Αποσύνδεση από την εφαρμογή και μέσω back-channel
Αποσυνδεθείτε από την εφαρμογή σας ή αφήστε το Usher Identity να ειδοποιεί κάθε εφαρμογή όταν μια περίοδος σύνδεσης λήγει οπουδήποτε.
- RFC 9449
DPoP
Δέστε τα διακριτικά σε ένα κλειδί που κρατά ο πελάτης, ώστε ένα κλεμμένο διακριτικό να μην είναι χρήσιμο από μόνο του.
- WebAuthn
Κλειδιά πρόσβασης
Πλήρως υποστηριζόμενα, όχι πρόσθετο. Οι χρήστες συνδέονται με δακτυλικό αποτύπωμα, πρόσωπο ή κλειδί ασφαλείας, και δεν υπάρχει τίποτα για ηλεκτρονικό ψάρεμα.
- TOTP
Εφαρμογές ελέγχου ταυτότητας
Κωδικοί βάσει χρόνου από οποιαδήποτε εφαρμογή ελέγχου ταυτότητας, με εφεδρικούς κωδικούς. Κάντε τον δεύτερο παράγοντα προαιρετικό ή υποχρεωτικό.
Μαγικοί σύνδεσμοι
Ένα άγγιγμα από τα εισερχόμενα. Σύντομης διάρκειας, μίας χρήσης και δεμένοι στο περιβάλλον που τους έστειλε.
Κωδικοί μέσω email
Έξι ψηφία, για όσους συνδέονται σε μία συσκευή και διαβάζουν το email τους σε άλλη.
Σύνδεση μέσω κοινωνικών δικτύων
Google, GitHub, Microsoft και Apple. Ένας λογαριασμός συνδέεται μόνο όταν το email του έχει επαληθευτεί.
Οργανισμοί και ομάδες
Μέλη, ρόλοι και προσκλήσεις για τις επιχειρήσεις που χρησιμοποιούν την εφαρμογή σας.
- Σύντομα
SAML
Ενιαία σύνδεση με τους παρόχους ταυτότητας προσωπικού των πελατών σας.
- Σύντομα
SCIM
Παροχή και κατάργηση πρόσβασης από τους καταλόγους των πελατών σας.
Πώς λειτουργεί μια σύνδεση
Πέντε βήματα, όλα τυποποιημένα.
Αυτή είναι η ροή κωδικού εξουσιοδότησης του OpenID Connect με PKCE, η ίδια ροή που μιλά κάθε σοβαρός πάροχος ταυτότητας. Κάντε κύλιση για να τη δείτε.
- 01
Η εφαρμογή σας τους στέλνει στο Lobby.
Όταν κάποιος επιλέγει Συνέχεια με 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
Συνδέονται, με τον δικό τους τρόπο.
Κλειδί πρόσβασης, κωδικός μέσω email, μαγικός σύνδεσμος, λογαριασμός κοινωνικού δικτύου ή συνθηματικό: το Lobby προσφέρει μόνο ό,τι επιτρέπει το περιβάλλον σας και λέει πάντα σε ποια εφαρμογή πηγαίνουν.
Usher IdentityUsher IdentityΣυνέχεια στο AcmeΚαλώς ήρθατε ξανά.
Χρήση κλειδιού πρόσβασηςΣτείλτε μου κωδικό με email - 03
Συμφωνούν να μοιραστούν.
Την πρώτη φορά, οι χρήστες βλέπουν τι ζητά η εφαρμογή σας (το προφίλ τους, το email τους, να παραμένουν συνδεδεμένοι) και συμφωνούν μία φορά.
Το Acme θα ήθελε να:
- Βλέπει το όνομα και την εικόνα σας
- Βλέπει τη διεύθυνση email σας
- Σας κρατά συνδεδεμένους
ΑκύρωσηΝα επιτρέπεται - 04
Το Usher Identity επιστρέφει έναν κωδικό.
Το πρόγραμμα περιήγησης επιστρέφει στο URI ανακατεύθυνσής σας με έναν κωδικό μίας χρήσης που ισχύει πέντε λεπτά, και την τιμή state που στείλατε, την οποία ελέγχει η εφαρμογή σας.
302 Found Location: https://app.acme.example/callback ?code=SplxlOBeZQQYbYS6WxSbIA &state=k3Jx…
- 05
Η εφαρμογή σας τον ανταλλάσσει με διακριτικά.
Ο διακομιστής σας στέλνει τον κωδικό και τον επαληθευτή PKCE στο τελικό σημείο διακριτικών. Επιστρέφουν ένα διακριτικό αναγνωριστικού που λέει ποιοι είναι, ένα διακριτικό πρόσβασης για το 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
- Όχι μια στήλη μισθωτή σε κοινόχρηστο πίνακα: ένα σχήμα φτιαγμένο για το περιβάλλον, και τίποτα άλλο μέσα του.
- Τα δικά του κλειδιά υπογραφής
- Τα διακριτικά ενός περιβάλλοντος δεν μπορούν ποτέ να επαληθευτούν με τα κλειδιά ενός άλλου.
- Τα δικά του σφραγισμένα μυστικά
- Σφραγισμένα με το κλειδί δεδομένων του ίδιου του περιβάλλοντος, το οποίο με τη σειρά του είναι τυλιγμένο από ένα κύριο κλειδί.
- Ο δικός του κεντρικός υπολογιστής
- Οι εκδότες βρίσκονται σε τομέα ξεχωριστό από τον ιστότοπο και το Console του Usher, με cookie μόνο για τον κεντρικό υπολογιστή.
usheridentity.com
Ο ιστότοπος, το Usher Identity Console, οι λογαριασμοί Usher Identity
*.usherid.com
Ένας εκδότης ανά περιβάλλον, σε ξεχωριστό τομέα
Οι χρήστες, οι περίοδοι σύνδεσης και τα διακριτικά βρίσκονται σε σχήμα φτιαγμένο για αυτό το περιβάλλον. Τα ερωτήματα εκτελούνται σε αυτό το σχήμα, ποτέ σε κοινόχρηστο πίνακα με στήλη μισθωτή.
Αντιγραφή του σφραγισμένου μυστικού πελάτη Google από το περιβάλλον παραγωγής του Acme στο περιβάλλον παραγωγής του 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Ο πλήρης οδηγός αυτοφιλοξενίας έρχεται. Οι παραπάνω εντολές δείχνουν τη μορφή του.
Οδηγήστε τους χρήστες σας μέσα.
Δημιουργήστε έναν χώρο εργασίας και ένα έργο, και το πρώτο σας περιβάλλον έρχεται με δικό του εκδότη, δικά του κλειδιά και δικό του Lobby.
Συνδεθείτε μία φορά. Ευπρόσδεκτοι παντού.