Μετάβαση στο περιεχόμενο

Ταυτότητα για τις εφαρμογές σας, σε ανοιχτά πρότυπα

Σας οδηγεί μέσα.

Ένας λογαριασμός. Κάθε πόρτα.

Το Usher Identity συνδέει τους χρήστες στις εφαρμογές σας με OpenID Connect και OAuth 2.1: κλειδιά πρόσβασης, κωδικοί, σύνδεση μέσω κοινωνικών δικτύων και οργανισμοί, με κάθε περιβάλλον χωριστά από κάθε άλλο.

Δωρεάν για να ξεκινήσετε. Εκτελείται και στους δικούς σας διακομιστές.

Το Lobby

Μια σελίδα σύνδεσης που καλωσορίζει, δεν ανακρίνει.

Το Lobby είναι η σελίδα σύνδεσης που φιλοξενεί το Usher Identity για την εφαρμογή σας. Λέει πάντα πού πηγαίνει ο χρήστης και φαίνεται ίδιο όποια εφαρμογή κι αν τον έστειλε, ώστε οι χρήστες να μαθαίνουν να το εμπιστεύονται.

Συνέχεια στο
Θέμα
  • Ονομάζει το προϊόν στο οποίο πηγαίνετε, κάθε φορά.
  • Κλειδιά πρόσβασης, κωδικοί μέσω email και μαγικοί σύνδεσμοι, με συνθηματικά μόνο αν τα θέλετε.
  • Η ίδια ήρεμη σελίδα, ανοιχτόχρωμη ή σκουρόχρωμη, σε κάθε προϊόν.

Αυτό είναι ένα λειτουργικό αντίγραφο του Lobby. Εκτελείται σε αυτή τη σελίδα, δεν στέλνει τίποτα και δεν συνδέει κανέναν.

Usher IdentityUsher IdentityΣυνέχεια στο Acme Notes

Καλώς ήρθατε ξανά.

Συνδεθείτε με τον λογαριασμό σας Usher Identity.

Πρώτη φορά εδώ;

Ασφαλίζεται από το Usher Identity

Πρότυπα, όχι δέσμευση

Μιλά τα πρωτόκολλα που ήδη ξέρει η στοίβα σας.

Το 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, η ίδια ροή που μιλά κάθε σοβαρός πάροχος ταυτότητας. Κάντε κύλιση για να τη δείτε.

  1. 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
  2. 02

    Συνδέονται, με τον δικό τους τρόπο.

    Κλειδί πρόσβασης, κωδικός μέσω email, μαγικός σύνδεσμος, λογαριασμός κοινωνικού δικτύου ή συνθηματικό: το Lobby προσφέρει μόνο ό,τι επιτρέπει το περιβάλλον σας και λέει πάντα σε ποια εφαρμογή πηγαίνουν.

    Usher IdentityUsher IdentityΣυνέχεια στο Acme

    Καλώς ήρθατε ξανά.

    Χρήση κλειδιού πρόσβασης
    Στείλτε μου κωδικό με email
  3. 03

    Συμφωνούν να μοιραστούν.

    Την πρώτη φορά, οι χρήστες βλέπουν τι ζητά η εφαρμογή σας (το προφίλ τους, το email τους, να παραμένουν συνδεδεμένοι) και συμφωνούν μία φορά.

    Το Acme θα ήθελε να:

    • Βλέπει το όνομα και την εικόνα σας
    • Βλέπει τη διεύθυνση email σας
    • Σας κρατά συνδεδεμένους
    ΑκύρωσηΝα επιτρέπεται
  4. 04

    Το Usher Identity επιστρέφει έναν κωδικό.

    Το πρόγραμμα περιήγησης επιστρέφει στο URI ανακατεύθυνσής σας με έναν κωδικό μίας χρήσης που ισχύει πέντε λεπτά, και την τιμή state που στείλατε, την οποία ελέγχει η εφαρμογή σας.

    302 Found
    Location: https://app.acme.example/callback
      ?code=SplxlOBeZQQYbYS6WxSbIA
      &state=k3Jx…
  5. 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 · app/page.tsxΈρχεται με το SDK
// 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 βρίσκονται σε δίκτυο χωρίς διαδρομή προς το διαδίκτυο.

Από ένα αντίγραφο του Usher Identity
# 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.

Συνδεθείτε μία φορά. Ευπρόσδεκτοι παντού.