Към съдържанието

Идентичност за вашите приложения, върху отворени стандарти

Въвежда ви вътре.

Един акаунт. Всяка врата.

Usher Identity осигурява вход в приложенията ви с OpenID Connect и OAuth 2.1: ключове за достъп, кодове, вход със социален акаунт и организации, като всяка среда е отделена от всички останали.

Безплатно за начало. Работи и на собствените ви сървъри.

Lobby

Страница за вход, която посреща, а не разпитва.

Lobby е страницата за вход, която Usher Identity хоства за вашето приложение. Тя винаги казва накъде отива човекът и изглежда еднакво, независимо кое приложение го е изпратило, така че хората се научават да ѝ имат доверие.

Продължавате към
Тема
  • Всеки път назовава продукта, към който отивате.
  • Ключове за достъп, кодове по имейл и магически връзки, а пароли – само ако желаете.
  • Същата спокойна страница, светла или тъмна, във всеки продукт.

Това е работещо копие на Lobby. То работи в тази страница, не изпраща нищо и не осъществява вход за никого.

Usher IdentityUsher IdentityПродължавате към Acme Notes

Добре дошли отново.

Влезте с акаунта си в Usher Identity.

За първи път сте тук?

Защитено от Usher Identity

Стандарти, а не обвързване

Говори протоколите, които вашият стек вече познава.

Usher Identity е преди всичко доставчик на OpenID Connect. Използвайте нашия SDK, когато ви е удобно, или която и да е OIDC библиотека на който и да е език. Ако някога си тръгнете, приложенията ви няма нужда да променят начина, по който хората влизат в тях.

Токени за опресняване, съгласие и обхвати – включени.
  • OIDC Core · Discovery

    OpenID Connect

    Документ за откриване за всяка среда, ID токени и userinfo. Работи всяка сертифицирана клиентска библиотека.

  • Само S256

    OAuth 2.1 с PKCE

    Код за оторизация с PKCE за всеки клиент – публичен или поверителен. Без implicit flow и без пароли в крайната точка за токени.

  • RS256 · ES256 · EdDSA

    JWKS и ротация на ключове

    Всяка среда подписва със собствени ключове, публикувани на нейния jwks_uri. Ротирайте ги, без да прекъсвате влезлите потребители.

  • RFC 7662 · RFC 7009

    Интроспекция и отменяне

    Проверете дали даден токен още е валиден или го прекратете веднага. Usher Identity проверява собствените си сесии при всяка заявка, така че прекратяването на сесия влиза в сила на мига.

  • Изход, иницииран от приложението, и изход по обратния канал

    Излезте от приложението си или оставете Usher Identity да уведоми всяко приложение, когато сесия приключи където и да е.

  • RFC 9449

    DPoP

    Обвържете токените с ключ, който е у клиента, така че откраднат токен да е безполезен сам по себе си.

  • WebAuthn

    Ключове за достъп

    Пълноценна функция, а не добавка. Хората влизат с пръстов отпечатък, лице или ключ за сигурност и няма какво да бъде откраднато чрез фишинг.

  • TOTP

    Приложения за удостоверяване

    Кодове, базирани на времето, от всяко приложение за удостоверяване, с резервни кодове. Направете втория фактор незадължителен или задължителен.

  • Магически връзки

    Едно докосване от пощата. Краткотрайни, еднократни и обвързани със средата, която ги е изпратила.

  • Кодове по имейл

    Шест цифри – за хора, които влизат от едно устройство, а четат имейла си на друго.

  • Вход със социален акаунт

    Google, GitHub, Microsoft и Apple. Акаунтът се свързва само когато имейлът му е потвърден.

  • Организации и екипи

    Членове, роли и покани за фирмите, които използват приложението ви.

  • Очаквайте скоро

    SAML

    Единен вход с корпоративните доставчици на идентичност на вашите клиенти.

  • Очаквайте скоро

    SCIM

    Автоматично добавяне и премахване на потребители от директориите на вашите клиенти.

Как протича един вход

Пет стъпки, всяка от тях – по стандарта.

Това е потокът с код за оторизация с PKCE на OpenID Connect – същият, който използва всеки сериозен доставчик на идентичност. Превъртете, за да го проследите.

  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

    Влизат по свой начин.

    Ключ за достъп, код по имейл, магическа връзка, социален акаунт или парола: Lobby предлага само това, което средата ви позволява, и винаги казва към кое приложение отиват.

    Usher IdentityUsher IdentityПродължавате към Acme

    Добре дошли отново.

    Използване на ключ за достъп
    Изпратете ми код по имейл
  3. 03

    Съгласяват се да споделят.

    Първия път хората виждат какво иска приложението ви (профила им, имейла им, да останат влезли) и дават съгласие веднъж.

    Acme иска да:

    • вижда името и снимката ви
    • вижда имейл адреса ви
    • ви държи влезли
    ОтказРазрешаване
  4. 04

    Usher Identity връща код.

    Браузърът се връща към вашия URI за пренасочване с еднократен код, валиден пет минути, и стойността state, която сте изпратили и която приложението ви проверява.

    302 Found
    Location: https://app.acme.example/callback
      ?code=SplxlOBeZQQYbYS6WxSbIA
      &state=k3Jx…
  5. 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 схема
Не колона за наемателя в обща таблица, а схема, създадена за средата, и нищо друго в нея.
Собствени ключове за подписване
Токени от една среда никога не могат да бъдат проверени с ключовете на друга.
Собствени запечатани тайни
Запечатани със собствения ключ за данни на средата, който на свой ред е обвит от главен ключ.
Собствен хост
Издателите се намират на домейн, отделен от сайта и Console на Usher, с бисквитки само за хоста.

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 и изходящото прокси. Контейнерите работят без нови привилегии и с премахнати възможности (capabilities).

  • 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.

Влезте веднъж. Добре дошли навсякъде.