Saltar para o conteúdo
Documentação · iOS e Android

iOS e Android

As apps nativas iniciam a sessão das pessoas através do Lobby do seu ambiente, no navegador do sistema e nunca numa web view: as pessoas usam as suas chaves-passe, as palavras-passe guardadas e a sessão do Usher, e a app nunca vê uma palavra-passe. Os SDKs tratam do resto do OpenID Connect por si e guardam os tokens no dispositivo.

Registe a app

Na Usher Console, abra o ambiente e escolha Aplicações → Nova aplicação → Telemóvel ou computador. Dê-lhe um redirecionamento de uso privado formado a partir de um domínio seu, como com.example.notes:/oauth/callback. A app recebe um ID de cliente e nenhum segredo: uma app num telemóvel não consegue guardá-lo, por isso usa PKCE em vez disso. A Console mostra a configuração para as duas plataformas.

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

Os tokens ficam guardados no Porta-chaves, apenas neste dispositivo.

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

O início de sessão abre num Custom Tab. A sessão é cifrada com uma chave guardada no Android Keystore.

O que os SDKs verificam

  • PKCE, state e nonce em cada início de sessão, e o emissor indicado na resposta (RFC 9207).
  • A assinatura do token de ID com as chaves do seu ambiente, bem como o emissor, a audiência e a validade.
  • Os tokens de atualização mudam: cada um é usado uma só vez. Terminar a sessão revoga-o no Usher.
  • DPoP, se o ativar: tokens associados a uma chave no dispositivo, inúteis se forem copiados para outro sítio.

Para chamar a sua própria API com o token de acesso, dê um nome à API e peça-a com resources: consulte As suas próprias APIs.