iOS és Android
A natív appok a rendszerböngészőben, a környezetük Lobbyjában jelentkeztetik be az embereket, soha nem webnézetben: így az emberek használhatják a jelkulcsaikat, a mentett jelszavaikat és az Usher-munkamenetüket, az app pedig soha nem lát jelszót. Az OpenID Connect többi részét az SDK-k végzik el helyetted, és a tokeneket az eszközön tartják.
Regisztráld az appot
Az Usher Console-ban nyisd meg a környezetet, majd válaszd az Alkalmazások → Új alkalmazás → Mobil vagy asztali lehetőséget. Adj meg neki egy privát sémás átirányítást egy saját domainedből képezve, például com.example.notes:/oauth/callback. Az app ügyfél-azonosítót kap, titkos kulcsot nem: egy telefonon futó app nem tudná titokban tartani, ezért helyette PKCE-t használ. A Console mindkét platformhoz megmutatja a beállítás lépéseit.
iOS és 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)A tokenek a Kulcskarikában vannak, csak ezen az eszközön.
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))A bejelentkezés egy Custom Tabben nyílik meg. A munkamenetet egy Android Keystore-ban tárolt kulcs titkosítja.
Mit ellenőriznek az SDK-k
- PKCE, state és nonce minden bejelentkezésnél, valamint a válaszban megnevezett kibocsátó (RFC 9207).
- Az ID-token aláírása a környezeted kulcsaival, valamint a kibocsátója, a célközönsége és a lejárata.
- A frissítési tokenek cserélődnek: mindegyik egyszer használható. Kijelentkezéskor az Usher visszavonja.
- DPoP, ha bekapcsolod: az eszközön lévő kulcshoz kötött tokenek, amelyek máshová másolva használhatatlanok.
Ha a hozzáférési tokennel a saját API-dat szeretnéd hívni, nevezd meg az API-t, és kérd a resources paraméterrel: lásd Saját API-k.