Przejdź do treści

Tożsamość dla Twoich aplikacji, na otwartych standardach

Zaprasza do środka.

Jedno konto. Wszystkie drzwi.

Usher Identity loguje użytkowników do Twoich aplikacji przez OpenID Connect i OAuth 2.1: klucze dostępu, kody, logowanie społecznościowe i organizacje, a każde środowisko jest oddzielone od wszystkich pozostałych.

Na start za darmo. Działa też na Twoich serwerach.

Lobby

Strona logowania, która wita, a nie przesłuchuje.

Lobby to strona logowania, którą Usher Identity hostuje dla Twojej aplikacji. Zawsze mówi, dokąd ktoś przechodzi, i wygląda tak samo bez względu na to, z której aplikacji ta osoba przyszła, więc ludzie nabierają do niego zaufania.

Przechodzisz do aplikacji
Motyw
  • Za każdym razem podaje nazwę produktu, do którego przechodzisz.
  • Klucze dostępu, kody wysyłane e-mailem i magiczne linki, a hasła tylko wtedy, gdy ich chcesz.
  • Ta sama spokojna strona, jasna lub ciemna, w każdym produkcie.

To działająca kopia Lobby. Działa na tej stronie, niczego nie wysyła i nikogo nie loguje.

Usher IdentityUsher IdentityPrzechodzisz do aplikacji Acme Notes

Witaj ponownie.

Zaloguj się, używając konta Usher Identity.

Pierwszy raz tutaj?

Zabezpieczone przez Usher Identity

Standardy, bez uzależnienia od dostawcy

Mówi językiem protokołów, które Twój stos technologiczny już zna.

Usher Identity jest przede wszystkim dostawcą OpenID Connect. Korzystaj z naszego SDK, kiedy Ci to odpowiada, albo z dowolnej biblioteki OIDC w dowolnym języku. Jeśli kiedyś zmienisz dostawcę, Twoje aplikacje nie będą musiały zmieniać sposobu logowania użytkowników.

Tokeny odświeżania, zgody i zakresy w zestawie.
  • OIDC Core · Discovery

    OpenID Connect

    Dokument wykrywania dla każdego środowiska, tokeny ID i userinfo. Działa każda certyfikowana biblioteka kliencka.

  • Tylko S256

    OAuth 2.1 z PKCE

    Kod autoryzacji z PKCE dla każdego klienta, publicznego czy poufnego. Bez przepływu niejawnego i bez haseł w punkcie końcowym tokenu.

  • RS256 · ES256 · EdDSA

    JWKS i rotacja kluczy

    Każde środowisko podpisuje tokeny własnymi kluczami, publikowanymi pod jego jwks_uri. Rotuj je bez przerywania sesji zalogowanych osób.

  • RFC 7662 · RFC 7009

    Introspekcja i unieważnianie

    Sprawdź, czy token jest wciąż ważny, albo unieważnij go od razu. Usher Identity sprawdza własne sesje przy każdym żądaniu, więc zakończenie sesji działa natychmiast.

  • Wylogowanie inicjowane przez RP i back-channel

    Wyloguj użytkownika z poziomu aplikacji albo pozwól, by Usher Identity powiadamiał każdą aplikację, gdy sesja gdziekolwiek się kończy.

  • RFC 9449

    DPoP

    Wiąże tokeny z kluczem, który ma klient, więc skradziony token sam w sobie jest bezużyteczny.

  • WebAuthn

    Klucze dostępu

    Pełnoprawna funkcja, a nie dodatek. Ludzie logują się odciskiem palca, twarzą albo kluczem bezpieczeństwa i nie ma niczego, co dałoby się wyłudzić.

  • TOTP

    Aplikacje uwierzytelniające

    Kody czasowe z dowolnej aplikacji uwierzytelniającej, z kodami zapasowymi. Drugi składnik może być opcjonalny lub wymagany.

  • Magiczne linki

    Jedno dotknięcie w skrzynce odbiorczej. Krótkotrwałe, jednorazowe i powiązane ze środowiskiem, które je wysłało.

  • Kody e-mail

    Sześć cyfr dla osób, które logują się na jednym urządzeniu, a pocztę czytają na innym.

  • Logowanie społecznościowe

    Google, GitHub, Microsoft i Apple. Konto jest łączone tylko wtedy, gdy jego adres e-mail został potwierdzony.

  • Organizacje i zespoły

    Członkowie, role i zaproszenia dla firm, które korzystają z Twojej aplikacji.

  • Wkrótce

    SAML

    Logowanie jednokrotne przez firmowych dostawców tożsamości Twoich klientów.

  • Wkrótce

    SCIM

    Automatyczne zakładanie i usuwanie kont na podstawie katalogów Twoich klientów.

Jak działa logowanie

Pięć kroków, każdy zgodny ze standardem.

To przepływ kodu autoryzacji z PKCE w OpenID Connect, ten sam, którym posługuje się każdy poważny dostawca tożsamości. Przewiń, aby prześledzić go krok po kroku.

  1. 01

    Twoja aplikacja kieruje użytkownika do Lobby.

    Gdy ktoś wybierze „Kontynuuj przez Usher Identity”, Twoja aplikacja przekierowuje tę osobę do punktu końcowego autoryzacji Twojego środowiska, z wyzwaniem PKCE i wartością state, którą później sprawdzi.

    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

    Użytkownik loguje się po swojemu.

    Klucz dostępu, kod wysłany e-mailem, magiczny link, konto społecznościowe lub hasło: Lobby oferuje tylko to, na co pozwala Twoje środowisko, i zawsze mówi, do której aplikacji ktoś przechodzi.

    Usher IdentityUsher IdentityPrzechodzisz do aplikacji Acme

    Witaj ponownie.

    Użyj klucza dostępu
    Wyślij mi kod e-mailem
  3. 03

    Użytkownik zgadza się udostępnić dane.

    Za pierwszym razem ludzie widzą, o co prosi Twoja aplikacja (profil, adres e-mail, utrzymanie sesji), i wyrażają zgodę raz.

    Aplikacja Acme prosi o:

    • Dostęp do Twojego imienia i zdjęcia
    • Dostęp do Twojego adresu e-mail
    • Utrzymywanie Twojej sesji
    AnulujZezwól
  4. 04

    Usher Identity odsyła kod.

    Przeglądarka wraca do Twojego URI przekierowania z jednorazowym kodem ważnym przez pięć minut i z wysłaną przez Ciebie wartością state, którą sprawdza Twoja aplikacja.

    302 Found
    Location: https://app.acme.example/callback
      ?code=SplxlOBeZQQYbYS6WxSbIA
      &state=k3Jx…
  5. 05

    Twoja aplikacja wymienia go na tokeny.

    Twój serwer wysyła kod i weryfikator PKCE do punktu końcowego tokenu. W odpowiedzi otrzymuje token ID, który mówi, kim jest użytkownik, token dostępu do Twojego API i token odświeżania, który podtrzymuje sesję.

    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
    }

Izolacja z założenia

Każde środowisko to osobny budynek.

Twoje środowiska produkcyjne i deweloperskie, a także środowiska wszystkich innych klientów, nie współdzielą niczego istotnego. Błąd w jednym z nich nie pozwoli odczytać danych innego, podpisać niczego w jego imieniu ani się do niego zalogować.

Własny schemat Postgres
Nie kolumna najemcy we wspólnej tabeli, tylko schemat utworzony dla tego środowiska, w którym nie ma niczego innego.
Własne klucze podpisywania
Tokenów z jednego środowiska nigdy nie da się zweryfikować kluczami innego.
Własne zapieczętowane sekrety
Zapieczętowane własnym kluczem danych środowiska, który z kolei jest opakowany kluczem głównym.
Własny host
Wystawcy działają w innej domenie niż witryna Usher i Usher Console, z plikami cookie przypisanymi do hosta.

usheridentity.com

Witryna, Usher Identity Console, konta Usher Identity

*.usherid.com

Jeden wystawca na środowisko, w osobnej domenie

Środowisko

Użytkownicy, sesje i tokeny znajdują się w schemacie utworzonym dla tego środowiska. Zapytania trafiają do tego schematu, nigdy do wspólnej tabeli z kolumną najemcy.

Skopiuj zapieczętowany sekret klienta Google ze środowiska produkcyjnego Acme do środowiska produkcyjnego Northwind.

Dla deweloperów

Twoje pierwsze logowanie, na trzy sposoby.

Dodaj SDK, gdy się pojawi, użyj biblioteki OIDC, której już ufasz, albo zacznij od przeczytania dokumentu wykrywania. Pod spodem to wciąż ten sam protokół.

app/layout.tsx · app/page.tsxPojawi się wraz z 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 />
}

Uruchom u siebie

Twoje serwery, Twoje klucze.

Korzystaj z Usher Identity jako usługi albo uruchom tę samą platformę na własnych serwerach, z własnymi kluczami i własną bazą danych.

  • Docker

    Jeden plik Compose: aplikacje, Postgres, Valkey, warstwa brzegowa Caddy i serwer proxy ruchu wychodzącego. Kontenery działają bez możliwości zdobycia nowych uprawnień i z odebranymi capabilities.

  • Ubuntu

    Wystarczy zwykły serwer z Ubuntu. Caddy terminuje TLS, a sekrety są plikami przekazywanymi do kontenerów i nigdy nie są wbudowywane w obrazy.

  • Postgres

    Postgres przechowuje wszystko, po jednym schemacie na środowisko. Baza i Valkey działają w sieci, z której nie ma trasy do internetu.

Z kopii repozytorium 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

Pełny przewodnik po samodzielnym hostowaniu jest w drodze. Powyższe polecenia pokazują, jak będzie wyglądać.

Zaproś użytkowników do środka.

Utwórz obszar roboczy i projekt, a Twoje pierwsze środowisko dostanie własnego wystawcę, własne klucze i własne Lobby.

Jedno logowanie. Wszędzie jak u siebie.