Vai al contenuto
Documentazione · iOS e Android

iOS e Android

Le app native fanno accedere le persone tramite la Lobby del loro ambiente nel browser di sistema, mai in una web view: le persone usano le proprie passkey, le password salvate e la sessione Usher, e l’app non vede mai una password. Gli SDK si occupano del resto di OpenID Connect al posto tuo e conservano i token sul dispositivo.

Registra l’app

In Usher Console, apri l’ambiente, poi Applicazioni → Nuova applicazione → Mobile o desktop. Assegnale un reindirizzamento a uso privato ricavato da un dominio di tua proprietà, come com.example.notes:/oauth/callback. L’app riceve un client ID e nessun segreto: un’app su un telefono non è in grado di custodirlo, quindi usa invece PKCE. Console mostra la configurazione per entrambe le piattaforme.

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

I token sono conservati nel Portachiavi, solo su questo dispositivo.

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

L’accesso si apre in una Custom Tab. La sessione è cifrata con una chiave nell’Android Keystore.

Cosa verificano gli SDK

  • PKCE, state e nonce a ogni accesso, e l’issuer indicato nella risposta (RFC 9207).
  • La firma del token ID con le chiavi del tuo ambiente, e il suo issuer, il destinatario e la scadenza.
  • I token di aggiornamento cambiano a ogni uso: ognuno viene usato una sola volta. Uscendo, viene revocato presso Usher.
  • DPoP, se lo attivi: token vincolati a una chiave sul dispositivo, inutili se copiati altrove.

Per chiamare la tua API con il token di accesso, indica l’API e richiedila con resources: vedi Le tue API.