Přeskočit na obsah
Dokumentace · iOS a Android

iOS a Android

Nativní aplikace přihlašují lidi přes Lobby svého prostředí v systémovém prohlížeči, nikdy ve webovém zobrazení: lidé použijí své přístupové klíče, uložená hesla a relaci Usher a aplikace žádné heslo nikdy neuvidí. Zbytek OpenID Connect za vás obstarají sady SDK a tokeny uchovají v zařízení.

Zaregistrujte aplikaci

V Usher Console otevřete prostředí a pak Aplikace → Nová aplikace → Mobilní nebo desktopová. Zadejte přesměrování se soukromým schématem odvozeným od domény, kterou vlastníte, například com.example.notes:/oauth/callback. Aplikace dostane ID klienta a žádný tajný klíč: aplikace v telefonu ho nedokáže uchovat v tajnosti, takže místo něj používá PKCE. Console ukáže nastavení pro obě platformy.

iOS a 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 se ukládají do Klíčenky, jen v tomto zařízení.

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řihlášení se otevře v Custom Tab. Relace je zašifrovaná klíčem v úložišti Android Keystore.

Co sady SDK kontrolují

  • PKCE, state a nonce při každém přihlášení a vydavatele uvedeného v odpovědi (RFC 9207).
  • Podpis ID tokenu proti klíčům vašeho prostředí a jeho vydavatele, příjemce a vypršení platnosti.
  • Obnovovací tokeny se vyměňují: každý se použije jen jednou. Odhlášení ho ve službě Usher odvolá.
  • DPoP, pokud ho zapnete: tokeny vázané na klíč v zařízení, které jsou k ničemu, když je někdo zkopíruje jinam.

Chcete-li přístupovým tokenem volat své vlastní API, pojmenujte API a požádejte o něj pomocí resources: viz Vaše vlastní API.