Перейти до вмісту

Ідентифікація для ваших програм на відкритих стандартах

Проводить вас усередину.

Один акаунт. Усі двері.

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 для кожного клієнта, публічного чи конфіденційного. Жодного неявного потоку, жодних паролів у кінцевій точці токенів.

  • RS256 · ES256 · EdDSA

    JWKS і ротація ключів

    Кожне середовище підписує власними ключами, опублікованими за його jwks_uri. Змінюйте їх, не виводячи з системи тих, хто вже ввійшов.

  • RFC 7662 · RFC 7009

    Інтроспекція та відкликання

    Дізнайтеся, чи токен досі дійсний, або відкличте його негайно. Usher Identity перевіряє власні сеанси під час кожного запиту, тож завершення сеансу діє одразу.

  • Вихід за ініціативою RP і через зворотний канал

    Виконуйте вихід із вашої програми або доручіть Usher Identity повідомляти кожну програму, коли сеанс десь завершується.

  • RFC 9449

    DPoP

    Прив’язуйте токени до ключа, який зберігає клієнт, — тоді вкрадений токен сам по собі нічого не дає.

  • WebAuthn

    Ключі входу

    Повноцінна можливість, а не доповнення. Люди входять за відбитком пальця, обличчям чи ключем безпеки, і виманити фішингом тут нічого.

  • TOTP

    Програми для автентифікації

    Коди на основі часу з будь-якої програми для автентифікації, з резервними кодами. Зробіть другий фактор необов’язковим або обов’язковим.

  • Магічні посилання

    Один дотик із поштової скриньки. Короткочасні, одноразові й прив’язані до середовища, яке їх надіслало.

  • Коди електронною поштою

    Шість цифр — для тих, хто входить на одному пристрої, а пошту читає на іншому.

  • Вхід через соцмережі

    Google, GitHub, Microsoft і Apple. Акаунт пов’язується, лише коли його електронну пошту підтверджено.

  • Організації та команди

    Учасники, ролі й запрошення для компаній, які користуються вашою програмою.

  • Незабаром

    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

    Людина входить у зручний для неї спосіб.

    Ключ входу, код електронною поштою, магічне посилання, акаунт у соцмережі чи пароль: 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
Не стовпець орендаря в спільній таблиці, а схема, створена для середовища, і нічого іншого в ній.
Власні ключі підпису
Токени одного середовища ніколи не пройдуть перевірку ключами іншого.
Власні запечатані секрети
Запечатані власним ключем даних середовища, який своєю чергою загорнуто головним ключем.
Власний хост
Видавці розміщені на окремому від сайту Usher і Console домені, а файли 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 на межі мережі та вихідний проксі. Контейнери працюють без права отримувати нові привілеї та без зайвих 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.

Увійдіть один раз — і вам раді всюди.