iOS i Android
Izvorne aplikacije prijavljuju ljude putem stranice Lobby njihova okruženja u pregledniku sustava, nikad u web-prikazu: ljudi koriste svoje pristupne ključeve, spremljene lozinke i sesiju platforme Usher, a aplikacija nikad ne vidi lozinku. SDK-ovi umjesto vas obavljaju ostatak protokola OpenID Connect i čuvaju tokene na uređaju.
Registrirajte aplikaciju
U sučelju Usher Console otvorite okruženje, a zatim Aplikacije → Nova aplikacija → Mobilna ili stolna. Dodijelite joj preusmjeravanje za privatnu upotrebu izvedeno iz domene koju posjedujete, kao što je com.example.notes:/oauth/callback. Aplikacija dobiva ID klijenta bez tajne: aplikacija na telefonu je ne može čuvati, pa umjesto toga koristi PKCE. Console prikazuje postavljanje za obje platforme.
iOS i 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)Tokeni se čuvaju u privjesku ključeva (Keychain), samo na ovom uređaju.
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))Prijava se otvara u prilagođenoj kartici (Custom Tab). Sesija je šifrirana ključem iz sustava Android Keystore.
Što SDK-ovi provjeravaju
- PKCE, state i nonce pri svakoj prijavi te izdavatelja navedenog u odgovoru (RFC 9207).
- Potpis ID tokena prema ključevima vašeg okruženja te njegova izdavatelja, publiku i istek.
- Tokeni za osvježavanje se izmjenjuju: svaki se koristi jednom. Odjava ga opoziva na platformi Usher.
- DPoP, ako ga uključite: tokeni vezani uz ključ na uređaju, beskorisni ako se kopiraju drugamo.
Da biste pristupnim tokenom pozvali vlastiti API, imenujte API i zatražite ga s resources: pogledajte Vaši vlastiti API-ji.