Hoppa till innehållet
Dokumentation · iOS och Android

iOS och Android

Native-appar loggar in människor via sin miljös Lobby i systemets webbläsare, aldrig i en webbvy: människor använder sina lösennycklar, sparade lösenord och sin Usher-session, och appen ser aldrig något lösenord. SDK:erna sköter resten av OpenID Connect åt dig och behåller tokens på enheten.

Registrera appen

Öppna miljön i Usher Console och välj sedan Appar → Ny app → Mobil eller dator. Ge den en omdirigering med ett privat schema byggt på en domän du äger, till exempel com.example.notes:/oauth/callback. Appen får ett klient-ID men ingen hemlighet: en app på en telefon kan inte hålla en hemlighet hemlig, så den använder PKCE i stället. Console visar konfigurationen för båda plattformarna.

iOS och 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)

Tokens sparas i nyckelringen, bara på den här enheten.

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))

Inloggningen öppnas i en Custom Tab. Sessionen krypteras med en nyckel i Android Keystore.

Vad SDK:erna kontrollerar

  • PKCE, state och nonce vid varje inloggning, och utfärdaren som anges i svaret (RFC 9207).
  • ID-tokenens signatur mot din miljös nycklar, och dess utfärdare, målgrupp och giltighetstid.
  • Uppdateringstokens roteras: var och en används en gång. Vid utloggning återkallas den hos Usher.
  • DPoP, om du slår på det: tokens som är bundna till en nyckel på enheten och oanvändbara om de kopieras någon annanstans.

Om du vill anropa ditt eget API med åtkomsttoken namnger du API:et och ber om det med resources: se Dina egna API:er.