ข้ามไปยังเนื้อหา

ข้อมูลประจำตัวสำหรับแอปของคุณ บนมาตรฐานเปิด

เชิญด้านใน

บัญชีเดียว ทุกประตู

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

    เอกสาร Discovery สำหรับแต่ละสภาพแวดล้อม โทเค็น ID และ userinfo ไลบรารีไคลเอ็นต์ที่ได้รับการรับรองตัวใดก็ใช้ได้

  • S256 เท่านั้น

    OAuth 2.1 พร้อม PKCE

    รหัสการอนุญาตพร้อม PKCE สำหรับทุกไคลเอ็นต์ ไม่ว่าจะเป็นแบบสาธารณะหรือแบบลับ ไม่มี implicit flow และไม่มีการส่งรหัสผ่านไปยังเอนด์พอยต์โทเค็น

  • RS256 · ES256 · EdDSA

    JWKS และการหมุนเวียนคีย์

    แต่ละสภาพแวดล้อมลงนามด้วยคีย์ของตัวเอง ซึ่งเผยแพร่ไว้ที่ jwks_uri ของสภาพแวดล้อมนั้น หมุนเวียนคีย์ได้โดยไม่ทำให้ผู้ที่ลงชื่อเข้าอยู่หลุดออก

  • RFC 7662 · RFC 7009

    Introspection และการเพิกถอน

    ถามได้ว่าโทเค็นยังใช้ได้อยู่หรือไม่ หรือยุติโทเค็นทันที Usher Identity ตรวจสอบเซสชันของตัวเองในทุกคำขอ การยุติเซสชันจึงมีผลทันที

  • การลงชื่อออกที่เริ่มจาก RP และผ่าน Back-channel

    ลงชื่อออกจากแอปของคุณ หรือให้ Usher Identity แจ้งทุกแอปเมื่อเซสชันสิ้นสุดลง ไม่ว่าจะที่ใดก็ตาม

  • RFC 9449

    DPoP

    ผูกโทเค็นไว้กับคีย์ที่ไคลเอ็นต์ถือครอง โทเค็นที่ถูกขโมยไปจึงใช้ไม่ได้หากไม่มีคีย์นั้น

  • WebAuthn

    พาสคีย์

    เป็นฟีเจอร์หลัก ไม่ใช่ส่วนเสริม ผู้คนลงชื่อเข้าด้วยลายนิ้วมือ ใบหน้า หรือกุญแจความปลอดภัย และไม่มีสิ่งใดให้ฟิชชิงได้

  • TOTP

    แอปยืนยันตัวตน

    รหัสตามเวลาจากแอปยืนยันตัวตนใดก็ได้ พร้อมรหัสสำรอง กำหนดให้ปัจจัยที่สองเป็นตัวเลือกหรือบังคับใช้ก็ได้

  • ลิงก์ลงชื่อเข้า

    แตะครั้งเดียวจากกล่องจดหมาย มีอายุสั้น ใช้ได้ครั้งเดียว และผูกกับสภาพแวดล้อมที่ส่งลิงก์นั้น

  • รหัสทางอีเมล

    ตัวเลขหกหลัก สำหรับผู้ที่ลงชื่อเข้าบนอุปกรณ์หนึ่งแต่อ่านอีเมลบนอีกอุปกรณ์หนึ่ง

  • การลงชื่อเข้าด้วยบัญชีโซเชียล

    Google, GitHub, Microsoft และ Apple บัญชีจะถูกเชื่อมโยงก็ต่อเมื่อพิสูจน์อีเมลของบัญชีนั้นแล้วเท่านั้น

  • องค์กรและทีม

    สมาชิก บทบาท และคำเชิญ สำหรับธุรกิจที่ใช้แอปของคุณ

  • เร็วๆ นี้

    SAML

    Single Sign-On กับผู้ให้บริการข้อมูลประจำตัวสำหรับพนักงานของลูกค้าคุณ

  • เร็วๆ นี้

    SCIM

    การเพิ่มและนำผู้ใช้ออกโดยอัตโนมัติจากไดเรกทอรีของลูกค้าคุณ

การลงชื่อเข้าทำงานอย่างไร

ห้าขั้นตอน ทุกขั้นตอนเป็นไปตามมาตรฐาน

นี่คือโฟลว์รหัสการอนุญาตพร้อม PKCE ของ OpenID Connect ซึ่งเป็นโฟลว์เดียวกับที่ผู้ให้บริการข้อมูลประจำตัวที่จริงจังทุกรายใช้ เลื่อนดูได้เลย

  1. 01

    แอปของคุณส่งผู้ใช้ไปที่ Lobby

    เมื่อมีคนเลือก “ดำเนินการต่อด้วย Usher Identity” แอปของคุณจะเปลี่ยนเส้นทางเขาไปยังเอนด์พอยต์การอนุญาตของสภาพแวดล้อม พร้อม PKCE challenge และค่า 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 ส่งรหัสกลับมา

    เบราว์เซอร์กลับไปยัง Redirect URI ของคุณพร้อมรหัสที่ใช้ได้ครั้งเดียวและมีอายุห้านาที รวมถึงค่า state ที่คุณส่งไป ซึ่งแอปของคุณจะตรวจสอบ

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

    แอปของคุณแลกรหัสเป็นโทเค็น

    เซิร์ฟเวอร์ของคุณส่งรหัสและ PKCE verifier ไปยังเอนด์พอยต์โทเค็น แล้วจะได้รับโทเค็น 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 ของตัวเอง
ไม่ใช่คอลัมน์ tenant ในตารางที่ใช้ร่วมกัน แต่เป็นสคีมาที่สร้างขึ้นสำหรับสภาพแวดล้อมนั้น และไม่มีสิ่งอื่นอยู่ในนั้น
คีย์ลงนามของตัวเอง
โทเค็นจากสภาพแวดล้อมหนึ่งไม่มีทางผ่านการตรวจสอบด้วยคีย์ของอีกสภาพแวดล้อมหนึ่งได้
ข้อมูลลับที่ปิดผนึกของตัวเอง
ปิดผนึกด้วยคีย์ข้อมูลของสภาพแวดล้อมนั้นเอง ซึ่งคีย์ข้อมูลก็ถูกห่อหุ้มด้วยคีย์หลักอีกชั้นหนึ่ง
โฮสต์ของตัวเอง
Issuer อยู่บนโดเมนที่แยกจากเว็บไซต์และ Console ของ Usher พร้อมคุกกี้แบบ host-only

usheridentity.com

เว็บไซต์ Usher Identity Console และบัญชี Usher Identity

*.usherid.com

หนึ่ง Issuer ต่อหนึ่งสภาพแวดล้อม บนโดเมนที่แยกต่างหาก

สภาพแวดล้อม

ผู้ใช้ เซสชัน และโทเค็นอยู่ในสคีมาที่สร้างขึ้นสำหรับสภาพแวดล้อมนี้ คิวรีทำงานกับสคีมานั้น ไม่เคยทำงานกับตารางที่ใช้ร่วมกันซึ่งมีคอลัมน์ tenant

คัดลอก Client secret ของ Google ที่ปิดผนึกไว้ของ Acme (ใช้งานจริง) ไปยัง Northwind (ใช้งานจริง)

สำหรับนักพัฒนา

การลงชื่อเข้าครั้งแรกของคุณ ได้สามวิธี

ใส่ SDK เมื่อพร้อมใช้งาน ใช้ไลบรารี OIDC ที่คุณไว้ใจอยู่แล้ว หรือเริ่มจากอ่านเอกสาร Discovery เบื้องหลังทั้งหมดคือโปรโตคอลเดียวกัน

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 ที่ขอบเครือข่าย และพร็อกซีขาออก คอนเทนเนอร์ทำงานโดยไม่ได้รับสิทธิ์เพิ่ม และตัด capability ออกแล้ว

  • Ubuntu

    เซิร์ฟเวอร์ Ubuntu ธรรมดาก็เพียงพอ Caddy จัดการ TLS และข้อมูลลับเป็นไฟล์ที่ส่งให้คอนเทนเนอร์ ไม่เคยฝังไว้ในอิมเมจ

  • Postgres

    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

คู่มือการโฮสต์เองฉบับเต็มกำลังจะมา คำสั่งด้านบนคือโครงร่างของคู่มือนั้น

เชิญผู้ใช้ของคุณเข้าด้านใน

สร้างเวิร์กสเปซและโปรเจกต์ แล้วสภาพแวดล้อมแรกของคุณจะมาพร้อม Issuer คีย์ และ Lobby ที่เป็นของตัวเอง

ลงชื่อเข้าครั้งเดียว ยินดีต้อนรับทุกที่