דילוג לתוכן

זהות לאפליקציות שלך, על תקנים פתוחים

מלווה אותך פנימה.

חשבון אחד. כל הדלתות.

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

    מסמך גילוי לכל סביבה, אסימוני זהות ו-userinfo. כל ספריית לקוח מוסמכת עובדת.

  • S256 בלבד

    OAuth 2.1 עם PKCE

    קוד הרשאה עם PKCE לכל לקוח, ציבורי או סודי. בלי זרימה מרומזת (implicit), ובלי סיסמאות בנקודת הקצה של האסימונים.

  • RS256 · ES256 · EdDSA

    JWKS והחלפת מפתחות

    כל סביבה חותמת במפתחות משלה, שמפורסמים ב-jwks_uri שלה. אפשר להחליף אותם בלי לנתק אנשים מחוברים.

  • RFC 7662 · RFC 7009

    בדיקה וביטול של אסימונים

    אפשר לשאול אם אסימון עדיין תקף, או לסיים אותו עכשיו. Usher Identity בודק את הסשנים שלו בכל בקשה, כך שסיום סשן נכנס לתוקף מיד.

  • התנתקות ביוזמת האפליקציה ובערוץ אחורי

    אפשר לנתק מתוך האפליקציה שלך, או לתת ל-Usher Identity להודיע לכל האפליקציות כשסשן מסתיים בכל מקום שהוא.

  • RFC 9449

    DPoP

    קושרים אסימונים למפתח שנמצא אצל הלקוח, כך שאסימון גנוב לא שווה כלום לבדו.

  • WebAuthn

    מפתחות גישה

    חלק מרכזי, לא תוספת. אנשים מתחברים עם טביעת אצבע, פנים או מפתח אבטחה, ואין שום דבר שאפשר לגנוב בפישינג.

  • TOTP

    אפליקציות אימות

    קודים מבוססי זמן מכל אפליקציית אימות, עם קודי גיבוי. גורם שני יכול להיות אפשרות או חובה.

  • קישורי קסם

    הקשה אחת מתיבת הדואר הנכנס. לזמן קצר, לשימוש אחד, וקשורים לסביבה ששלחה אותם.

  • קודים בדוא״ל

    שש ספרות, לאנשים שמתחברים במכשיר אחד וקוראים דוא״ל במכשיר אחר.

  • התחברות דרך רשתות חברתיות

    Google, GitHub, Microsoft ו-Apple. חשבון מקושר רק אחרי שכתובת הדוא״ל שלו אומתה.

  • ארגונים וצוותים

    חברים, תפקידים והזמנות לעסקים שמשתמשים באפליקציה שלך.

  • בקרוב

    SAML

    התחברות יחידה (SSO) מול ספקי הזהויות הארגוניים של הלקוחות שלך.

  • בקרוב

    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 מחזיר קוד.

    הדפדפן חוזר אל כתובת ההפניה שלך עם קוד חד-פעמי שתקף לחמש דקות, ועם ה-state ששלחת, שהאפליקציה שלך בודקת.

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

    האפליקציה שלך מחליפה אותו באסימונים.

    השרת שלך שולח את הקוד ואת ה-verifier של PKCE לנקודת הקצה של האסימונים. בחזרה מגיעים אסימון זהות שאומר מי הם, אסימון גישה ל-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 משלה.

מתחברים פעם אחת. ברוכים הבאים בכל מקום.