Preskočiť na obsah
Dokumentácia · iOS a Android

iOS a Android

Natívne aplikácie prihlasujú ľudí cez Lobby svojho prostredia v systémovom prehliadači, nikdy vo webovom zobrazení: ľudia použijú svoje prístupové kľúče, uložené heslá a reláciu Usher a aplikácia nikdy neuvidí heslo. Zvyšok OpenID Connect za vás urobia SDK a tokeny uchovajú v zariadení.

Zaregistrujte aplikáciu

V Usher Console otvorte prostredie a potom Aplikácie → Nová aplikácia → Mobil alebo počítač. Dajte jej presmerovanie so súkromnou schémou odvodenou od domény, ktorú vlastníte, napríklad com.example.notes:/oauth/callback. Aplikácia dostane ID klienta a žiadny tajný kód: aplikácia v telefóne ho nedokáže uchovať v bezpečí, preto namiesto neho používa PKCE. Console zobrazí nastavenie pre obe 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 sa uchovávajú v Kľúčenke, len v tomto zariadení.

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

Prihlásenie sa otvorí v Custom Tab. Relácia je zašifrovaná kľúčom v úložisku Android Keystore.

Čo SDK kontrolujú

  • PKCE, state a nonce pri každom prihlásení a vydavateľa uvedeného v odpovedi (RFC 9207).
  • Podpis tokenu ID voči kľúčom vášho prostredia a jeho vydavateľa, príjemcu a platnosť.
  • Obnovovacie tokeny sa vymieňajú: každý sa použije len raz. Odhlásenie ho v službe Usher odvolá.
  • DPoP, ak ho zapnete: tokeny viazané na kľúč v zariadení, bezcenné, ak ich niekto skopíruje inam.

Ak chcete s prístupovým tokenom volať vlastné API, pomenujte API a vyžiadajte si ho cez resources: pozrite si Vaše vlastné API.