iOS și Android
Aplicațiile native conectează oamenii prin Lobby-ul mediului, în browserul sistemului, niciodată într-un web view: oamenii își folosesc cheile de acces, parolele salvate și sesiunea Usher, iar aplicația nu vede niciodată vreo parolă. SDK-urile se ocupă de restul OpenID Connect pentru dvs. și păstrează tokenurile pe dispozitiv.
Înregistrați aplicația
În Usher Console, deschideți mediul, apoi Aplicații → Aplicație nouă → Mobil sau desktop. Dați-i o redirecționare cu schemă privată, formată dintr-un domeniu pe care îl dețineți, cum ar fi com.example.notes:/oauth/callback. Aplicația primește un ID client și niciun secret: o aplicație de pe telefon nu poate păstra unul, așa că folosește în schimb PKCE. Console afișează configurarea pentru ambele 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)Tokenurile sunt păstrate în Portchei, doar pe acest dispozitiv.
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))Conectarea se deschide într-un Custom Tab. Sesiunea este criptată cu o cheie din Android Keystore.
Ce verifică SDK-urile
- PKCE, state și nonce la fiecare conectare, plus emitentul numit în răspuns (RFC 9207).
- Semnătura tokenului ID, cu cheile mediului, precum și emitentul, audiența și expirarea lui.
- Tokenurile de reîmprospătare se rotesc: fiecare este folosit o singură dată. Deconectarea îl revocă la Usher.
- DPoP, dacă îl activați: tokenuri legate de o cheie de pe dispozitiv, inutile dacă sunt copiate în altă parte.
Pentru a apela propriul API cu tokenul de acces, denumiți API-ul și cereți-l cu resources: consultați API-urile dvs..