iOS og Android
Native apps logger folk ind via deres miljøs Lobby i systembrowseren, aldrig i en webvisning: folk bruger deres adgangsnøgler, gemte adgangskoder og Usher-session, og appen ser aldrig en adgangskode. SDK’erne klarer resten af OpenID Connect for dig og holder tokens på enheden.
Registrer appen
Åbn miljøet i Usher Console, og vælg derefter Applikationer → Ny applikation → Mobil eller computer. Giv den en omdirigering med et privat skema, der er lavet ud fra et domæne, du ejer, f.eks. com.example.notes:/oauth/callback. Appen får et klient-id og ingen hemmelighed: en app på en telefon kan ikke holde på en, så den bruger PKCE i stedet. Console viser opsætningen til begge platforme.
iOS og 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)Tokens gemmes i nøgleringen, kun på denne enhed.
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))Login foregår i en Custom Tab. Sessionen krypteres med en nøgle i Android Keystore.
Det tjekker SDK’erne
- PKCE, state og nonce ved hvert login samt den udsteder, der står i svaret (RFC 9207).
- Id-tokenets signatur mod dit miljøs nøgler samt dets udsteder, målgruppe og udløb.
- Opdateringstokens roteres: hvert bruges én gang. Når personen logger ud, tilbagekaldes det hos Usher.
- DPoP, hvis du slår det til: tokens bundet til en nøgle på enheden, ubrugelige, hvis de kopieres andre steder hen.
Vil du kalde dit eget API med adgangstokenet, så navngiv API’et, og bed om det med resources: se Dine egne API’er.