iOS dan Android
Aplikasi asli mendaftar masuk orang melalui Lobby persekitaran mereka dalam pelayar sistem, tidak sekali-kali paparan web: orang menggunakan kunci laluan, kata laluan yang disimpan dan sesi Usher mereka, dan aplikasi itu tidak pernah melihat kata laluan. SDK melakukan selebihnya OpenID Connect untuk anda, dan menyimpan token pada peranti.
Daftarkan aplikasi
Dalam Usher Console, buka persekitaran, kemudian Aplikasi → Aplikasi baharu → Mudah alih atau desktop. Berikan ubah hala penggunaan peribadi yang dibuat daripada domain milik anda, seperti com.example.notes:/oauth/callback. Ia mendapat ID klien tanpa rahsia: aplikasi pada telefon tidak dapat menyimpannya, jadi ia menggunakan PKCE sebaliknya. Console menunjukkan persediaan untuk kedua-dua platform.
iOS dan macOS
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)Token disimpan dalam Rantai Kunci, pada peranti ini sahaja.
Android
// 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))Daftar masuk dibuka dalam Custom Tab. Sesi disulitkan dengan kunci dalam Android Keystore.
Apa yang disemak oleh SDK
- PKCE, state dan nonce pada setiap daftar masuk, dan pengeluar yang dinamakan dalam jawapan (RFC 9207).
- Tandatangan token ID terhadap kunci persekitaran anda, serta pengeluar, audiens dan tarikh luputnya.
- Token muat semula berputar: setiap satu digunakan sekali. Daftar keluar membatalkannya di Usher.
- DPoP, jika anda menghidupkannya: token terikat pada kunci di peranti, tidak berguna jika disalin ke tempat lain.
Untuk memanggil API anda sendiri dengan token akses, namakan API itu dan mintanya dengan resources: lihat API anda sendiri.