Gå til innholdet
Dokumentasjon · iOS og Android

iOS og Android

Native apper logger folk på gjennom miljøets Lobby i systemnettleseren, aldri i en nettvisning: folk bruker passnøklene sine, lagrede passord og Usher-økten sin, og appen ser aldri et passord. SDK-ene gjør resten av OpenID Connect for deg, og holder tokenene på enheten.

Registrer appen

I Usher Console åpner du miljøet og deretter Apper → Ny app → Mobil eller datamaskin. Gi den en omdirigering for privat bruk laget av et domene du eier, som com.example.notes:/oauth/callback. Den får en klient-ID og ingen hemmelighet: en app på en telefon kan ikke holde på en, så den bruker PKCE i stedet. Console viser oppsettet for begge plattformene.

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

Tokenene oppbevares i nøkkelringen, bare på denne 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))

Påloggingen åpnes i en Custom Tab. Økten krypteres med en nøkkel i Android Keystore.

Hva SDK-ene sjekker

  • PKCE, state og nonce ved hver pålogging, og utstederen som er oppgitt i svaret (RFC 9207).
  • Signaturen til ID-tokenet mot miljøets nøkler, og utstederen, mottakeren og utløpstiden.
  • Oppdateringstokener roteres: hvert brukes én gang. Utlogging tilbakekaller det hos Usher.
  • DPoP, hvis du slår det på: tokener bundet til en nøkkel på enheten, ubrukelige hvis de kopieres et annet sted.

For å kalle ditt eget API med tilgangstokenet gir du API-et et navn og ber om det med resources: se Dine egne API-er.