Przejdź do treści
Dokumentacja · iOS i Android

iOS i Android

Aplikacje natywne logują ludzi przez Lobby swojego środowiska w przeglądarce systemowej, nigdy w widoku WWW: ludzie korzystają ze swoich kluczy dostępu, zapisanych haseł i sesji Usher, a aplikacja nigdy nie widzi hasła. Resztą OpenID Connect zajmują się za Ciebie SDK, które przechowują też tokeny na urządzeniu.

Zarejestruj aplikację

W Usher Console otwórz środowisko, a następnie wybierz Aplikacje → Nowa aplikacja → Urządzenie mobilne lub komputer. Nadaj jej przekierowanie z prywatnym schematem utworzonym z domeny, która należy do Ciebie, takie jak com.example.notes:/oauth/callback. Aplikacja dostaje identyfikator klienta, ale nie dostaje sekretu: aplikacja na telefonie nie jest w stanie go bezpiecznie przechować, więc zamiast tego używa PKCE. Console pokazuje konfigurację dla obu platform.

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

Tokeny są przechowywane w pęku kluczy, tylko na tym urządzeniu.

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

Logowanie otwiera się w karcie niestandardowej (Custom Tab). Sesja jest szyfrowana kluczem z Android Keystore.

Co sprawdzają SDK

  • PKCE, state i nonce przy każdym logowaniu oraz wystawcę wskazanego w odpowiedzi (RFC 9207).
  • Podpis tokenu ID kluczami Twojego środowiska, a także jego wystawcę, odbiorcę i czas wygaśnięcia.
  • Rotację tokenów odświeżania: każdy jest używany raz. Wylogowanie unieważnia go w Usher.
  • DPoP, jeśli je włączysz: tokeny powiązane z kluczem na urządzeniu, bezużyteczne po skopiowaniu gdzie indziej.

Aby wywołać własne API tokenem dostępu, nazwij API i poproś o nie za pomocą resources: zobacz Twoje własne API.