Идентичност за вашите приложения, върху отворени стандарти
Въвежда ви вътре.
Един акаунт. Всяка врата.
Usher Identity осигурява вход в приложенията ви с OpenID Connect и OAuth 2.1: ключове за достъп, кодове, вход със социален акаунт и организации, като всяка среда е отделена от всички останали.
Безплатно за начало. Работи и на собствените ви сървъри.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
Lobby
Страница за вход, която посреща, а не разпитва.
Lobby е страницата за вход, която Usher Identity хоства за вашето приложение. Тя винаги казва накъде отива човекът и изглежда еднакво, независимо кое приложение го е изпратило, така че хората се научават да ѝ имат доверие.
- Всеки път назовава продукта, към който отивате.
- Ключове за достъп, кодове по имейл и магически връзки, а пароли – само ако желаете.
- Същата спокойна страница, светла или тъмна, във всеки продукт.
Това е работещо копие на Lobby. То работи в тази страница, не изпраща нищо и не осъществява вход за никого.
Стандарти, а не обвързване
Говори протоколите, които вашият стек вече познава.
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 – същият, който използва всеки сериозен доставчик на идентичност. Превъртете, за да го проследите.
- 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
Влизат по свой начин.
Ключ за достъп, код по имейл, магическа връзка, социален акаунт или парола: Lobby предлага само това, което средата ви позволява, и винаги казва към кое приложение отиват.
Usher IdentityUsher IdentityПродължавате към AcmeДобре дошли отново.
Използване на ключ за достъпИзпратете ми код по имейл - 03
Съгласяват се да споделят.
Първия път хората виждат какво иска приложението ви (профила им, имейла им, да останат влезли) и дават съгласие веднъж.
Acme иска да:
- вижда името и снимката ви
- вижда имейл адреса ви
- ви държи влезли
ОтказРазрешаване - 04
Usher Identity връща код.
Браузърът се връща към вашия URI за пренасочване с еднократен код, валиден пет минути, и стойността state, която сте изпратили и която приложението ви проверява.
302 Found Location: https://app.acme.example/callback ?code=SplxlOBeZQQYbYS6WxSbIA &state=k3Jx…
- 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
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 са в мрежа без маршрут към интернет.
# 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.
Влезте веднъж. Добре дошли навсякъде.