iOS dan Android
Aplikasi native memasukkan orang melalui Lobby lingkungannya di browser sistem, tidak pernah lewat web view: orang menggunakan kunci sandi, kata sandi tersimpan, dan sesi Usher mereka, dan aplikasi tidak pernah melihat kata sandi. SDK mengerjakan sisa OpenID Connect untuk Anda, dan menyimpan token di perangkat.
Daftarkan aplikasi
Di Usher Console, buka lingkungan, lalu Aplikasi → Aplikasi baru → Seluler atau desktop. Beri aplikasi itu pengalihan skema privat yang dibuat dari domain milik Anda, seperti com.example.notes:/oauth/callback. Aplikasi ini mendapat ID klien tanpa rahasia: aplikasi di ponsel tidak dapat menyimpannya, jadi aplikasi menggunakan PKCE sebagai gantinya. Console menampilkan penyiapan untuk kedua 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 di Rantai Kunci, hanya di perangkat ini.
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))Proses masuk dibuka di Custom Tab. Sesi dienkripsi dengan kunci di Android Keystore.
Yang diperiksa SDK
- PKCE, state, dan nonce di setiap proses masuk, serta penerbit yang disebutkan dalam jawaban (RFC 9207).
- Tanda tangan token ID terhadap kunci lingkungan Anda, beserta penerbit, audiens, dan masa berlakunya.
- Token refresh dirotasi: masing-masing hanya dipakai sekali. Keluar akan mencabutnya di Usher.
- DPoP, jika Anda menyalakannya: token terikat ke kunci di perangkat, tidak berguna jika disalin ke tempat lain.
Untuk memanggil API Anda sendiri dengan token akses, beri nama API itu dan minta dengan resources: lihat API Anda sendiri.