الانتقال إلى المحتوى
الوثائق · iOS و Android

iOS و Android

تسجّل التطبيقات الأصلية دخول الأشخاص عبر Lobby الخاص ببيئتها في متصفح النظام، لا في عرض ويب أبدًا: يستخدم الأشخاص مفاتيح المرور وكلمات السر المحفوظة وجلسة Usher الخاصة بهم، ولا يرى التطبيق أي كلمة سر. وتتولى حزم SDK بقية OpenID Connect نيابةً عنك، وتحفظ الرموز المميزة على الجهاز.

سجّل التطبيق

في Usher Console، افتح البيئة، ثم التطبيقات ← تطبيق جديد ← جوّال أو سطح مكتب. أعطه عنوان إعادة توجيه للاستخدام الخاص مبنيًا من نطاق تملكه، مثل com.example.notes:/oauth/callback. يحصل التطبيق على معرّف عميل دون سر، فالتطبيق على الهاتف لا يستطيع الاحتفاظ به، لذا يستخدم PKCE بدلًا من ذلك. ويعرض Console خطوات الإعداد للمنصتين كلتيهما.

iOS و macOS

swift
import UsherKit

let usher = UsherClient(configuration: .init(
    issuer: URL(string: "https://login.example.com")!,
    clientID: "…",
    redirectURI: URL(string: "com.example.notes:/oauth/callback")!))

let session = try await usher.signIn()
var request = URLRequest(url: URL(string: "https://api.example.com/notes")!)
try await usher.authorize(&request)

تُحفظ الرموز المميزة في سلسلة المفاتيح، على هذا الجهاز فقط.

Android

kotlin
// build.gradle.kts: manifestPlaceholders["usherRedirectScheme"] = "com.example.notes"
val usher = Usher.client(context, UsherConfiguration(
    issuer = "https://login.example.com",
    clientId = "…",
    redirectUri = "com.example.notes:/oauth/callback"))

val session = usher.signIn(Usher.customTabs(activity))

يُفتح تسجيل الدخول في Custom Tab. وتُشفَّر الجلسة بمفتاح في Android Keystore.

ما الذي تتحقق منه حزم SDK

  • PKCE و state و nonce في كل تسجيل دخول، وجهة الإصدار المذكورة في الرد (RFC 9207).
  • توقيع رمز الهوية مقابل مفاتيح بيئتك، وجهة إصداره وجمهوره وموعد انتهاء صلاحيته.
  • تتجدد رموز التحديث: يُستخدم كل منها مرة واحدة. ويؤدي تسجيل الخروج إلى إبطاله لدى Usher.
  • DPoP، إن شغّلته: رموز مميزة مرتبطة بمفتاح على الجهاز، لا فائدة منها إذا نُسخت إلى مكان آخر.

لاستدعاء واجهة API الخاصة بك برمز الوصول، سمِّ الواجهة واطلبها باستخدام resources: راجع واجهات API الخاصة بك.