Direct naar de inhoud
Documentatie · iOS en Android

iOS en Android

Native apps laten mensen inloggen via de Lobby van hun omgeving in de systeembrowser, nooit in een webview: mensen gebruiken hun toegangssleutels, bewaarde wachtwoorden en Usher-sessie, en de app ziet nooit een wachtwoord. De SDK’s doen de rest van OpenID Connect voor je, en houden de tokens op het apparaat.

Registreer de app

Open in Usher Console de omgeving en kies Applicaties → Nieuwe applicatie → Mobiel of desktop. Geef de app een omleiding voor privégebruik op basis van een domein dat van jou is, zoals com.example.notes:/oauth/callback. De app krijgt een client-ID en geen geheim: een app op een telefoon kan een geheim niet geheimhouden, en gebruikt daarom PKCE. Console toont de configuratie voor beide platforms.

iOS en 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 worden bewaard in de sleutelhanger, alleen op dit apparaat.

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

Het inloggen opent in een Custom Tab. De sessie wordt versleuteld met een sleutel in de Android Keystore.

Wat de SDK’s controleren

  • PKCE, state en nonce bij elke inlog, en de issuer die in het antwoord wordt genoemd (RFC 9207).
  • De handtekening van het ID-token tegen de sleutels van je omgeving, en de issuer, audience en vervaltijd ervan.
  • Vernieuwingstokens roteren: elk token wordt één keer gebruikt. Bij uitloggen trekt Usher het in.
  • DPoP, als je het aanzet: tokens gebonden aan een sleutel op het apparaat, waardeloos als ze ergens anders naartoe worden gekopieerd.

Wil je met het toegangstoken je eigen API aanroepen, registreer de API dan en vraag erom met resources: zie Je eigen API’s.